【问题标题】:Unable to get xml node from XElement无法从 XElement 获取 xml 节点
【发布时间】:2011-12-17 01:12:58
【问题描述】:

我真的需要关于下面 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();

请帮忙。我真的被困住了。

【问题讨论】:

    标签: c# xml linq xelement


    【解决方案1】:

    试试这个:

    List<XElement> xElements = xmlDocument.Descendants(Aw + "name")
                    .Descendants(Aw + "partname")
                    .Descendants(Aw + "typename")
                    .Descendants(Aw + "tyvalue")
                    .Where(x => x.Value == "Last")
                    .ToList();
    

    【讨论】:

    • 感谢您的回复。我在回家的路上坐地铁,但我会在星期一早上第一件事尝试一下。
    【解决方案2】:

    x.Element 返回第一个孩子;由于有很多 ,您需要使用“元素”而不是“元素”,您必须对其进行迭代。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2021-05-14
      • 1970-01-01
      相关资源
      最近更新 更多