【发布时间】:2012-01-25 18:10:38
【问题描述】:
我有一个类(Person)和一个 XML 树:
<rows>
<row>
<number>1110</number>
<name>Street</name>
<value>First Avenue</value>
<description>First Avenue</description>
</row>
<row>
<number>1120</number>
<name>House number</name>
<value>281</value>
<description>281</description>
</row>
<row>
<number>1160</number>
<name>Postal</name>
<value>2552AD</value>
<description>2552AD</description>
</row>
<row>
<number>1170</number>
<name>Area</name>
<value>Peru</value>
<description>Peru</description>
</row>
</rows>
person 类具有街道、门牌号、邮政和区域等属性。如何填充这个人对象?
我的查询中的问题是我不知道在哪里添加:
where (string)c.Element("name") == "Street"
到目前为止我的代码:
public class XMLparser
{
public Person XMLparse(string path)
{
Person person = new Person();
List<Person> ListPerson = new List<Person>();
XDocument file = XDocument.Load(path);
var query = from c in file.Descendants("row")
select new
{
c.Element("value").Value
};
// Loop through results
foreach (var value in query)
{
person._street = value.Value;
person._housenumber = value.Value;
person._postal = value.Value;
person._area = value.Value;
}
return person;
}
}
我想要的是从xml中取出并填写
person._street = value.Value; //<-- First Avenue
person._housenumber = value.Value; //<-- 281
person._postal = value.Value; //<-- 2552AD
person._area = value.Value; //<-- Peru
编辑:
这是原始的 XMl 树。
<?xml version="1.0" encoding="utf-8" ?>
<results>
<person>
<categories>
<category>
<number>01</number>
<name>Person</name>
<rows>
<row>
<number>0110</number>
<name>ID</name>
<value>value ID</value>
<description>value ID</description>
</row>
</rows>
</category>
<category>
<number>08</number>
<name>Address</name>
<rows>
<row>
<number>1110</number>
<name>Street</name>
<value>value street</value>
<description>value street</description>
</row>
<row>
<number>1120</number>
<name>House number</name>
<value>value House number</value>
<description>value House number</description>
</row>
<row>
<number>1160</number>
<name>Postal</name>
<value>value Postal</value>
<description>value Postal</description>
</row>
<row>
<number>1170</number>
<name>Area</name>
<value>value Area</value>
<description>value Area</description>
</row>
</rows>
</category>
</categories>
</person>
<person>
<categories>
<category>
<number>01</number>
<name>Person</name>
<rows>
<row>
<number>0110</number>
<name>ID</name>
<value>value ID</value>
<description>value ID</description>
</row>
</rows>
</category>
<category>
<number>08</number>
<name>Address</name>
<rows>
<row>
<number>1110</number>
<name>Street</name>
<value>value Street</value>
<description>value Street</description>
</row>
<row>
<number>1120</number>
<name>House number</name>
<value>value House number</value>
<description>value House number</description>
</row>
<row>
<number>1130</number>
<name>House number extra</name>
<value>value House number extra</value>
<description>value House number extra</description>
</row>
<row>
<number>1160</number>
<name>Postal</name>
<value>value Postal</value>
<description>value Postal</description>
</row>
<row>
<number>1170</number>
<name>Area</name>
<value>value Area</value>
<description>value Area</description>
</row>
</rows>
</category>
</categories>
</person>
</results>
【问题讨论】: