代码之家  ›  专栏  ›  技术社区  ›  Anton

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

  •  1
  • Anton  · 技术社区  · 7 年前

    <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查询来选择其中的元素。除了根元素之外,选择工作正常。这是我用来选择元素的代码

        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);
    

    第一次 会回来的 null

    var xpathQueryN1 = "./n1:data";
    var xpathQueryN1 = "n1:data";
    

    但他们两个都不会回来 data 元素。唯一的办法就是

    var xpathQueryN1 = ".";
    

    为什么显式xpath到 n1:data

    0 回复  |  直到 7 年前