簡體   English   中英

如何獲取 xml 文檔的所有命名空間以進行正確的 XPath 評估?

[英]How to get all namespaces of xml document for correct XPath evaluating?

我嘗試評估簡單的 xpath

"//pr:Name"

對於這個 xml

<?xml version="1.0" encoding="utf-8"?>
<pr:Products xmlns:pr="http://www.example.com/">
    <pr:Name>Coffee</pr:Name>
</pr:Products>

但是我在運行時得到了 xml 文件,即我無法使用 AddNamespace() 方法填充 XmlNamespaceManager(這就是評估失敗的原因)。 我試着做這個把戲

    XDocument xdoc;
    XmlReader reader;
    using (var stream = new FileStream("test.xml", FileMode.Open))
    {
        reader = new XmlTextReader(stream);
        xdoc = XDocument.Load(reader);
    }
    var nsManager = new XmlNamespaceManager(reader.NameTable);
    var xpath = "//pr:Name";
    var xvalue = xdoc.XPathEvaluate(xpath, nsManager);

但這對我沒有幫助。 您知道如何為 XPath 解析命名空間或以其他方式評估 XPath 嗎? 謝謝!

如果你在編譯時不知道命名空間,你可能會使用這個 XPath:

//*[local-name() = 'Name']

此 XPath 選擇所有Name元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM