简体   繁体   English

如何反序列化嵌套的XML?

[英]How to deserialize nested XML?

I'm new into this, and I've been searching around similar questions and that's all I got for now. 我是新手,我一直在寻找类似的问题,而这就是我现在所拥有的。 I want to keep XML hierarchy and make it a something that could be iterated. 我想保持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>

My XML looks like that. 我的XML看起来像这样。 This works and I can actually read the first level, but cant reach the lower levels yet. 这行得通,我实际上可以阅读第一级,但是还不能达到较低的水平。

That is because you deserialize User into Movie , that is most likely the origin of your problem... 那是因为您将User反序列化为Movie ,这很可能是问题的根源...

Your User class should contain a list of Movie . 您的User类应包含Movie列表。 I would also recommend to fold the Movies into one XML list element since that makes deserializing easier. 我还建议将Movies折叠到一个XML列表元素中,因为这样可以简化反序列化。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM