LINQ to XML选择带有前缀的根元素

时间:2018-09-26 15:20:01

标签: c# xpath linq-to-xml

我有一个简单的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不起作用?

0 个答案:

没有答案