我是XML和Linq to 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对象的列表以供我的代码使用。我需要帮助的地方是提取节点元素的标题和图像属性列表。我还需要整体描述和itemdescription。我已经尝试了上述代码的每个变体替换Descendant for Elements,Element for Attribute等。我知道这可能是一个基本问题,但似乎没有一个直接的指导那里向初学者解释这个。
答案 0 :(得分:2)
获取字幕
// 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;