我有一个简单的xml文档
<n1:data xmlns:n1="http://test.com/types" xmlns="http://test.com/basic" xmlns:n2="http://test.com/value">
<n2:value>Test</n2:value>
</n1:data>
,我需要根据我从外部代码获得的XPath Query在其中选择元素。除根元素外,选择工作正常。这是我用于元素选择的代码
NameTable nameTable = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nameTable);
nsmgr.AddNamespace("n1", "http://test.com/types");
nsmgr.AddNamespace("n2", "http://test.com/value");
var xpathQueryN1 = "//n1:data";
var xpathQueryN2 = "//n2:value";
var elementN1 = xmlContent.XPathSelectElement(xpathQueryN1, nsmgr);
var elementN2 = xmlContent.XPathSelectElement(xpathQueryN2, nsmgr);
第一个 xpathQuery 将返回null
,第二个将返回一个元素。我也尝试过像
var xpathQueryN1 = "./n1:data";
var xpathQueryN1 = "n1:data";
但是它们都不返回data
元素。唯一的方法是使用
var xpathQueryN1 = ".";
为什么到n1:data
的显式xpath不起作用?