无法从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();

请帮助。我真的卡住了。

无法从XElement获取xml节点

试试这个:

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"上进行迭代。