有没有办法在使用nav.SelectSingleNode时欺骗名称空间

时间:2014-01-14 13:18:36

标签: c# xml xpath xml-parsing

我正在尝试创建一个应用程序,它将输出某些xpath中的数据(将由用户指定)

XPathDocument xmldoc = new XPathDocument(file);
XPathNavigator nav = xmldoc.CreateNavigator();
XPathNavigator result = nav.SelectSingleNode("//p");
MessageBox.Show(result.Value);

这里变量文件是xml文件的位置。 现在,当我在一个xml文件上运行此代码时,上面的代码返回null引用异常,因为变量result为null,我试图访问
    result.Value。

但是当我创建自己的xml文件时

<a>
<b>
<p>abc</p> 
</b>
</a>

代码运行良好。

所以,我推断的是问题是因为我没有在代码中包含名称空间。

我搜索并发现了一个建议,即欺骗命名空间的方法是使用相对的xpath,例如// p .Here What is a good way to find a specific value in an XML document using C#?

但代码仍无法在原始文件(包含命名空间的文件)上运行

1 个答案:

答案 0 :(得分:1)

怎么样:

XPathNavigator result = nav.SelectSingleNode("//*[local-name()='p']");