【问题标题】:How to determine if XElement.Elements() contains a node with a specific name?如何确定 XElement.Elements() 是否包含具有特定名称的节点?
【发布时间】:2010-09-19 09:22:38
【问题描述】:

例如对于以下 XML

 <Order>
  <Phone>1254</Phone>
  <City>City1</City>
  <State>State</State>
 </Order>

我可能想知道 XElement 是否包含“City”节点。

【问题讨论】:

    标签: c# xml linq .net-3.5


    【解决方案1】:

    只需将另一个重载用于Elements

    bool hasCity = OrderXml.Elements("City").Any();
    

    【讨论】:

    • 如果您不关心它在树中的位置,也可以使用 Descendants("MyNode").Any()。
    • CS1061:“System.Collections.Generic.IEnumerable”不包含“任何”的定义
    • @AlanBaljeu 在文件顶部添加“使用 System.Linq”。这允许使用扩展方法 System.Linq.Enumerable.Any。
    【解决方案2】:

    自从我做 Xlinq 以来已经有一段时间了,但是我的 WAG 来了:

    from x in XDocument
    where x.Elements("City").Count > 0
    select x
    

    ;

    【讨论】:

      【解决方案3】:

      David's 是最好的,但如果您需要一些自定义逻辑,您可以编写自己的谓词OrderXML.Elements("City").Exists(x=&gt;x.Name =="City")

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-27
        • 2019-04-14
        • 1970-01-01
        • 2014-02-14
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        相关资源
        最近更新 更多