将xml对象层次结构转换为对象并添加到列表中

时间:2010-12-14 19:45:25

标签: c# xml

我是xml的新手,所以请不要介意它是否过于琐碎的问题

假设我有一个xml文件,如下所示

 <Person>       
        <Name>John-Jaime-Winston Junior</Name>       
    </Person>
    <Person>       
        <Name>Steve</Name>
    </person   

现在我将有一个人物对象,我可以知道如何阅读xml并覆盖对象数组。

最后,我想要一个包含所有人物对象的列表。

我无法开始如何做到这一点,因为我是xml的新手

class person {

 string _name

 public string Name
        {
            get { return _name}
            set { _name= value; }
        }

}

提前致谢

2 个答案:

答案 0 :(得分:3)

鉴于.NET 3.5和System.Xml.Linq,这非常简单。

var q = from e in XElement.Parse(xml).Elements()
        select new Person() { 
            Name = e.Element("Name").Value 
        };

var p = q.ToList();

您需要提供有效的XML,如下所示:

<People>
    <Person>
        <Name>Jim</Name>
    </Person>
    <Person>
        <Name>Bill</Name>
    </Person>
</People>

答案 1 :(得分:1)

我认为你想要像XmlSerializer这样的东西,你可以通过它来序列化和反序列化对象。只需要定义属性public

[Serializable()]
public class person 
{

        string _name

        public string Name
        {
            get { return _name}
            set { _name= value; }
        }

}

并使用它:

        XmlSerializer serializer = new XmlSerializer(typeof(Person));
        StreamWriter sw = new StreamWriter("c:\\out.xml");
        serializer.Serialize(sw,new Person{Name = "Test"});
        sw.Close();


        StreamReader sr = new StreamReader("c:\\out.xml");
        var outVal = serializer.Deserialize(sr) as Person;

但是以正常方式解析xml,你可以使用XDocument或XPath,...