我在看(如下所示)的XML文件:的LINQ to XML不知道有多少后裔有
<test>
<vehiclenumber>123</vehiclenumber>
<form>
<form_id>1</form_id>
<datafield>
<fieldnumber>1</fieldnumber>
<data>
<datawords>
<datatext1>1234</datatext1>
<mc2>656865</mc2>
</datawords>
</data>
</datafield>
</form>
</test>
目前,我有以下代码:
IEnumerable<XElement> elements = documentXDoc.Descendants("test");
_fuelReceipts.AddRange(elements
.Select(receipt => new Receipt()
{
vehicle_number = receipt.Element("vehiclenumber") == null ? "" : receipt.Element("vehiclenumber").Value,
field = receipt.Descendants("datafield")
.Select(x => new Field()
{
field_number = x.Element("fieldnumber") == null ? "" : x.Element("fieldnumber").Value,
event_data = x.Descendants("data")
.Select(y => new FieldData()
{
event_data = y.Value
}).ToList()
}).ToList()
}));
}
这里的问题是对于<data>
我不知道有多少后裔将在那里或他们将被称为什么。有没有办法在不知道这些信息的情况下分开分析这些信息?现在,我会得到类似1234656865的东西,实际上我想在一个对象中使用1234,在同一个对象中使用656865。
当我这样做的时候,我在ToList()的最后得到一个错误。它试图将一个generic.list转换为我的业务对象。现在业务对象只是公共字符串event_data {get;组; },这是怎么工作的? – mameesh 2012-04-09 15:34:00
我编辑了我的答案。 'event_data'应该是'List'或'IEnumerable '。如果你只需要一个空格作为分隔符的字符串,可以使用第二个例子,用'String.Join()' –
MarcinJuraszek
2012-04-09 15:36:15