Linq to XML,提取属性和元素
本文关键字:属性 元素 提取 to XML Linq | 更新日期: 2023-09-27 17:57:01
我是XML和Linq到XML的新手,我只是找不到一个好的指南来解释如何使用它。我有一个简单的XML字符串,结构如下
<mainitem>
<items>
<itemdescription>ABC</itemdescription>
<item>
<itemtext>XXX</itemtext>
</item>
<item>
<itemtext>YYY</itemtext>
</item>
<item>
<itemtext>ZZZ</itemtext>
</item>
</items>
<overalldescription>ABCDEFG</overalldescription>
<itemnodes>
<node caption="XXX" image="XXX"></node>
<node caption="YYY" image="YYY"></node>
<node caption="ZZZ" image="ZZZ"></node>
</itemnodes>
</mainitem>
我正在使用 C# 代码,例如
var Items = (from xElem in XMLCODEABOVE.Descendants("item")
select new ItemObject
{
ItemObjectStringProperty = xElem.Element("itemtext").Value,
}
);
提取要与我的代码一起使用的 ItemText 对象的列表。我需要帮助的地方是提取节点元素的标题和图像属性列表。我还需要整体描述和项目描述。我已经尝试了上述代码的所有变体,将后代替换为元素,将元素替换为属性等。我知道这可能是一个基本问题,但似乎没有一个直接的指南来向初学者解释这一点。
获取字幕
// IEnumerable<string>
var captions = from node in doc.Descendants("node")
select node.Attribute("caption").Value;
或者在一个镜头中同时显示字幕和图像属性:
// IEnumerable of the anonymous type
var captions = from node in doc.Descendants("node")
select new {
caption = node.Attribute("caption").Value,
image = node.Attribute("image").Value
};
对于描述:
// null ref risk if element doesn't exist
var itemDesc = doc.Descendants("itemdescription").FirstOrDefault().Value;
var overallDesc = doc.Descendants("overalldescription ").FirstOrDefault().Value;