如何反序列化嵌套 XML?
How to deserialize nested XML?
我是这方面的新手,我一直在搜索类似的问题,这就是我现在得到的全部内容。我想保留 XML 层次结构并使其成为可以迭代的东西。
static void Main(string[] args)
{
List<Movie> movies = DeserializeFromXML();
for (int i = 0; i < movies.Count; i++)
{
Console.WriteLine(movies[i]);
}
}
.
static List<Movie> DeserializeFromXML()
{
XmlSerializer deserializer = new XmlSerializer(typeof(List<Movie>));
TextReader textReader = new StreamReader(@"C:\movies.xml");
List<Movie> movies;
movies = (List<Movie>)deserializer.Deserialize(textReader);
textReader.Close();
return movies;
}
.
public class Movie
{
public string Name
{ get; set; }
}
.
<?xml version="1.0" encoding="utf-8"?>
<Favorites>
<User>
<Name>User 1 Name</Name>
<Movie>
<Name>Movie 1 Name</Name>
<Actor>
<Name>Actor Name</Name>
</Actor>
<Actor>
<Name>Actor Name</Name>
</Actor>
</Movie>
<Movie>
<Name>Movie 2 Name</Name>
<Actor>
<Name>Actor Name</Name>
</Actor>
</Movie>
</User>
<User>
<Name>User 2 Name</Name>
<Movie>
<Name>Movie 1 Name</Name>
<Actor>
<Name>Actor Name</Name>
</Actor>
<Actor>
<Name>Actor Name</Name>
</Actor>
</Movie>
<Movie>
<Name>Movie 2 Name</Name>
<Actor>
<Name>Actor Name</Name>
</Actor>
</Movie>
</User>
</Favorites>
我的 XML 看起来像那样。这有效,我实际上可以阅读第一级,但还不能达到较低的级别。
那是因为您将 User
反序列化为 Movie
,这很可能是您问题的根源...
您的 User
class 应包含 Movie
的列表。我还建议将 Movies
折叠成一个 XML 列表元素,因为这样可以更轻松地进行反序列化。
我是这方面的新手,我一直在搜索类似的问题,这就是我现在得到的全部内容。我想保留 XML 层次结构并使其成为可以迭代的东西。
static void Main(string[] args)
{
List<Movie> movies = DeserializeFromXML();
for (int i = 0; i < movies.Count; i++)
{
Console.WriteLine(movies[i]);
}
}
.
static List<Movie> DeserializeFromXML()
{
XmlSerializer deserializer = new XmlSerializer(typeof(List<Movie>));
TextReader textReader = new StreamReader(@"C:\movies.xml");
List<Movie> movies;
movies = (List<Movie>)deserializer.Deserialize(textReader);
textReader.Close();
return movies;
}
.
public class Movie
{
public string Name
{ get; set; }
}
.
<?xml version="1.0" encoding="utf-8"?>
<Favorites>
<User>
<Name>User 1 Name</Name>
<Movie>
<Name>Movie 1 Name</Name>
<Actor>
<Name>Actor Name</Name>
</Actor>
<Actor>
<Name>Actor Name</Name>
</Actor>
</Movie>
<Movie>
<Name>Movie 2 Name</Name>
<Actor>
<Name>Actor Name</Name>
</Actor>
</Movie>
</User>
<User>
<Name>User 2 Name</Name>
<Movie>
<Name>Movie 1 Name</Name>
<Actor>
<Name>Actor Name</Name>
</Actor>
<Actor>
<Name>Actor Name</Name>
</Actor>
</Movie>
<Movie>
<Name>Movie 2 Name</Name>
<Actor>
<Name>Actor Name</Name>
</Actor>
</Movie>
</User>
</Favorites>
我的 XML 看起来像那样。这有效,我实际上可以阅读第一级,但还不能达到较低的级别。
那是因为您将 User
反序列化为 Movie
,这很可能是您问题的根源...
您的 User
class 应包含 Movie
的列表。我还建议将 Movies
折叠成一个 XML 列表元素,因为这样可以更轻松地进行反序列化。