【问题标题】:How can I check if an attribute exist in XmlAttributeCollection?如何检查 XmlAttributeCollection 中是否存在属性?
【发布时间】:2011-11-16 13:02:01
【问题描述】:

我在 MSDN 上检查 XmlNode.Attributes topic 关于检查 XmlNode 是否存在给定名称的属性的方法。好吧,没有关于如何检查项目的示例。

我有类似的东西:

  //some code here...

  foreach (XmlNode node in n.SelectNodes("Cities/City"))
  {
        //is there some method to check an attribute like
        bool isCapital = node.Attributes.Exist("IsCapital");

        //some code here...
  }

那么,检查每个节点中是否存在属性的最佳方法是什么? 用node.Attribute["IsCapital"]!=null可以吗?

【问题讨论】:

    标签: c# xmlattributecollection


    【解决方案1】:

    只使用索引器——如果属性不存在,索引器返回null

    bool isCapital = nodes.Attributes["IsCapital"] != null;
    

    这记录在XmlAttributeCollection.ItemOfProperty (String)

    具有指定名称的XmlAttribute。如果该属性不存在,则该属性返回null

    【讨论】:

    • 似乎不适用于可以存在但未指定值的布尔属性。喜欢<myTag text="something" isChecked />
    • @Ivan - 您似乎在考虑 HTML,而不是 XML。 XML 不允许属性中没有值。
    • 但是 XHTML 呢,@Oded?它不是意味着是有效的 XML,同时允许没有布尔值的属性吗?我实际上试图在我自己的 XML 中使用它来达到“debloat”的目的。
    • @Ivan - 不,XHTML 也必须是有效的 XML - 这就是它的全部意义所在。它不允许布尔属性。
    • 为了实际使用,请记住XmlNode.Attributes属性可以为空。 nodes?.Attributes["IsCapital"] != null
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2014-08-11
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多