不需要在XPath路径前面加上名称空间?

时间:2018-10-23 18:52:41

标签: .net xpath

我是XPath的新手,所以我希望在这里使用正确的术语...

我有一个〜200k XML文件,我想使用.Net XPath进行解析。我已经使用online tool测试了我的查询,并使它们按照我想要的方式工作。但是,当我在.Net中使用这些相同的查询时,它们始终不返回任何内容。

经过反复摆弄之后,我发现我可以通过定义名称空间管理器,然后为该名称空间加上所有前缀来“解决”此问题:

XMLDoc = New XmlDocument()
XMLDoc.Load(FilePath)
mgr = New XmlNamespaceManager(XMLDoc.NameTable)
mgr.AddNamespace("a", "a.xsd")
Root = XMLDoc.DocumentElement
prop = Root.SelectSingleNode("//a:Properties/:PropertyData//a:boy/a:does/a:this/a:get/a:annoying", mgr)

必须在各处使用a:mgr,使得代码难以读取和键入。有没有一种方法可以解决此问题,从而不必在各处撒上数百个a:

文件摘要:

 <Properties>
    <PropertyData>
      <PropertyName>a place</PropertyName>
      <Address>APlace Road</Address>
      <City>NYC</City>

0 个答案:

没有答案