如何检查 XmlAttributeCollection 中是不是存在属性?
Posted
技术标签:
【中文标题】如何检查 XmlAttributeCollection 中是不是存在属性?【英文标题】: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
可以吗?
【问题讨论】:
【参考方案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
以上是关于如何检查 XmlAttributeCollection 中是不是存在属性?的主要内容,如果未能解决你的问题,请参考以下文章