我有一个解析xml后得到的XElement。只有在需要时才需要读取此XElement,因此我将其存储在列表中以备将来使用。
我必须使用Linq阅读此XElement。
XDocument doc = XDocument.Parse(DataManager.offeringElements[index].DataElem.ToString());
var docNode = from dataNode in doc.Descendants("DataLinks")
select new
{
Offering = dataNode .Element("link").Value,
linkUrl = dataNode.Element("link").Attribue("href").Value
};
Xelement具有以下节点
<DataLinks>
<link href="">a. Management</link>
<link href="">b. Analytics</link>
<link href="">c. Development</link>
</DataLinks>
我的问题是我无法读取所有三个节点。我只能获得第一个节点。哪里出错了?
答案 0 :(得分:0)
这应该起作用,即元素不是后代,并确保在选择新元素时,您正在选择一种对象。
public class ObjectType
{
public Offering {get; set;}
public linkUrl {get; set;}
}
var docNode = from dataNode in doc.Elemenets ("DataLinks")
select new ObjectType
{
Offering = dataNode .Element("link").Value,
linkUrl = dataNode.Element("link").Attribue("href").Value
};
答案 1 :(得分:0)
我会这样做。恕我直言,方法语法看起来比查询语法更清晰。请注意,这是未经测试的代码。
IEnumerable<XElement> seqLinks = doc.Descendants("DataLinks").Single()
.Descendants("link");
foreach(XElement link in seqLinks)
{
Console.WriteLine("Value is {0}, and href is {1}",
link.Value, link.Attribute("href").Value)
}