我有像这样的xml:
<Person>
<Person>
<Name>Asd</Name>
<Surname>Dsa/Surname>
<City>ASdasd</City>
</Person>
<Person>
<Name>Asadas</Name>
<Surname>Dsadsad</Surname>
<City>dsadsa</City>
</Person>
</Person>
班主任:
public class Person
{
public string Name{ get; set; }
public string Surname{ get; set; }
public string City { get ; set; }
}
功能: public static void
SendTheLoadedPerson(ObservableCollection<ObservableCollection<Person>> list)
{
XmlRootAttribute oRootAttr = new XmlRootAttribute();
XDocument doc = XDocument.Parse(path);
var pepoleList= (from r in doc.Root.Elements("Person")
select new Person()
{
Name = (string)r.Element("Name"),
Surname = (string)r.Element("Surname"),
City = (string)r.Element("City")
}).ToList();
}
我想将每个人添加到列表ObservableCollection&gt;名单 但是一旦我不知道如何做到这一点,而且pepoleList返回空 请你告诉我任何提示? 我的案例与其他案例不同,因为我有ObservableCollection&gt;列出其他人只有对象列表
答案 0 :(得分:0)
实际上,我认为您的XML
中存在拼写错误,这使得正确解析变得棘手:
<!-- Persons maybe, not Person... -->
<Persons>
<Person>
<Name>Asd</Name>
<Surname>Dsa/Surname>
<City>ASdasd</City>
</Person>
<Person>
<Name>Asadas</Name>
<Surname>Dsadsad</Surname>
<City>dsadsa</City>
</Person>
</Persons>
从该假设开始,定义您的类(包括根标签):
[XmlRoot("Persons")]
public class Persons
{
[XmlElement("Person")]
public List<Person> Persons { get; set; }
}
public class Person
{
[XmlElement("Name")]
public String Name { get; set; }
[XmlElement("Surname")]
public String Surname { get; set; }
[XmlElement("City")]
public String City { get; set; }
}
并反序列化您的文件:
Persons persons = null;
XmlSerializer serializer = new XmlSerializer(typeof(Persons));
using (FileStream stream = new FileStream(@"C:\Path\To\File\MyXML.xml",FileMode.Open))
persons = (Persons)serializer.Deserialize(stream);