我正在使用.Net 2.0,並且需要從我的XmlDocument
開始SelectSingleNode
,無論名稱空間如何,因爲可能聽起來不正確。SelectSingleNode without namespace
要具體
XmlElement slipType = (XmlElement)document.SelectSingleNode("//Provenance1");
將設置slipType
爲空,因爲我知道don'l個命名空間Provenance1是在查詢的時間。
我正在使用.Net 2.0,並且需要從我的XmlDocument
開始SelectSingleNode
,無論名稱空間如何,因爲可能聽起來不正確。SelectSingleNode without namespace
要具體
XmlElement slipType = (XmlElement)document.SelectSingleNode("//Provenance1");
將設置slipType
爲空,因爲我知道don'l個命名空間Provenance1是在查詢的時間。
可以檢查元件的local-name並用下面的XPath表達式忽略名稱空間:
//*[local-name()='Provenance1']
嘗試:
XmlElement slipType = (XmlElement)document.SelectSingleNode("//*:Provenance1");
或者:
XmlElement slipType = (XmlElement)document.SelectSingleNode("//@*:Provenance1");
的屬性...
不幸的是,這種結構將只使用XPath 2.0工作,而.NET只使用XPath 1.0中。我上面用2.0解析器代碼意外測試,所以它不工作)
這將引發XPathException // *:Provenance1具有無效標記。 – 2009-09-29 13:25:34
我用.NET 3.5測試過它,它也崩潰了。但是,這是一個有效的XPath構造。不幸的是,我測試過的XPath 2.0。但是,.NET只使用XPath 1.0,而.NET不太可能支持2.0 ... – 2009-09-29 20:01:43
另一個微軟所謂的程序員使最簡單的事情變得複雜的例子。 – TomeeNS 2017-07-11 15:38:12