无法从XElement获取xml节点
本文关键字:xml 节点 获取 XElement | 更新日期: 2023-09-27 18:18:00
我真的需要下面where子句的帮助。
考虑这个xml
<name xmlns="http://www.imsglobal.org/xsd/imslip_v1p0">
<partname>
<typename>
<tyvalue>First</tyvalue>
</typename>
<text>Charles</text>
</partname>
<partname>
<typename>
<tyvalue>Last</tyvalue>
</typename>
<text>Ward</text>
</partname>
</name>
返回一个元素
List<XElement> xElements = xmlDocument.Descendants(Aw + "name").
Where(x => (x.Element(Aw + "partname").Element(Aw + "typename").Element(Aw + "tyvalue")).Value == "First").
Select(x => x.Element(Aw + "partname").Element(Aw + "text")).ToList();
但是如果我将where子句更改为"Last",它将返回零元素。
List<XElement> xElements = xmlDocument.Descendants(Aw + "name").
Where(x => (x.Element(Aw + "partname").Element(Aw + "typename").Element(Aw + "tyvalue")).Value == "Last").
Select(x => x.Element(Aw + "partname").Element(Aw + "text")).ToList();
请帮助。我真的卡住了。
试试这个:
List<XElement> xElements = xmlDocument.Descendants(Aw + "name")
.Descendants(Aw + "partname")
.Descendants(Aw + "typename")
.Descendants(Aw + "tyvalue")
.Where(x => x.Value == "Last")
.ToList();
元素返回第一个子元素;因为有很多元素,所以您需要使用"Elements"而不是"Element",因为您必须在"Element"上进行迭代。