我正在尝试创建一个应用程序,它将输出某些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#?
但代码仍无法在原始文件(包含命名空间的文件)上运行
答案 0 :(得分:1)
怎么样:
XPathNavigator result = nav.SelectSingleNode("//*[local-name()='p']");