2011-06-14 131 views
2

是否有一種簡單的方法來檢測XPathNavigator XML節點上是否存在空的屬性(例如<node><node attribute="">)? Node.GetAttribute以任一方式返回空字符串。我唯一能想到的就是檢查Node.OuterXML屬性,這看起來很愚蠢。使用XPathNavigator檢測是否存在空的XML節點屬性

(注:該節點將不會實際上是空的,所以我不能只用Node.HasAttributes。)

+0

如果可能,我會建議使用LINQ to XML。 – svick 2011-06-14 22:59:23

+0

這可能是可行的,但是在項目的早期階段測試LINQ時,與直接解析XML相比,我發現它增加了很多開銷。不過,在某些情況下它確實很有用,所以我可以再仔細研究一下。 – RobinHood70 2011-06-15 00:14:40

+0

我不明白,使用LINQ to XML,「只是直接解析XML」,它只是不同的API(和恕我直言,更好的一個)。我不知道爲什麼會造成性能開銷。如果你將它與諸如'XmlReader'之類的東西進行比較,那就不一樣了,但你不是。 – svick 2011-06-16 22:09:51

回答

5

您可以使用XPath:如果

elem.SelectSingleNode("@attribute") 

這將返回nullattribute並不存在,另一個XPathNavigatorNodeTypeAttributeValue包含一個空字符串,如果該屬性存在,但是爲空。

+0

這正是我所期待的。謝謝! – RobinHood70 2011-06-15 00:11:38

相關問題