我有一个带有数据的传入文件
<root><![CDATA[<defs><elements>
<element><item>aa</item><int>1</int></element>
<element><item>bb</item><int>2</int></element>
<element><item>cc</item><int>3</int></element>
</elements></defs>]]></root>
编写多个foreach(root.Elements中的xElement x)似乎是多余的!
寻找一种不那么详细的方法,最好使用C#
更新 - 是的 - 输入是在CDATA中,请放心,这不是我的设计,我对ZERO有控制权!
答案 0 :(得分:3)
假设讨厌的CDATA
部分是故意的,并且您只对叶元素的文本内容感兴趣,您可以执行以下操作:
XElement root = XElement.Load(yourFile);
var data = from element in XElement.Parse(root.Value).Descendants("element")
select new {
Item = element.Elements("item").First().Value,
Value = element.Elements("int").First().Value
};
也就是说,如果生成输入文件的代码在您的控制之下,请考虑删除CDATA
部分。以这种方式在XML中存储XML并不是大多数时间的方式,因为它违背了标记语言的目的(并且需要多个解析器传递,如上所示)。