我正在使用.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