<?xml version="1.0" encoding="UTF-8"?>
<MyRootElement xmlns="urn:MyNamespaceUri_1">
<Color>
<Name>Primary</Name>
<ID>1</ID>
<Description>Red</Description>
<Status>In Use</Status>
<Reference xmlns="urn:MyNamespaceUri_2">
<ColorCode>3</ColorCode>
<ID>1616</ID>
</Reference>
</Color>
</MyRootElement>
我正在嘗試使用以下代碼在 Reference 元素下提取 ID 元素的值,并且 SelectSingleNode 呼叫回傳 null
XmlNamespaceManager nsmgr = new XmlNamespaceManager(myXmlDoc.NameTable);
nsmgr.AddNamespace(String.Empty, "urn:MyNamespaceUri_1");
XmlNode idXml = myXmlDoc.SelectSingleNode("/MyRootElement/Color/Reference/ID", nsmgr);
var colorIdValue = idXml.InnerText;
.Net 小提琴,https://dotnetfiddle.net/BA1AYu
uj5u.com熱心網友回復:
為了找到節點,您必須正確注冊命名空間,例如:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("ns1", "urn:MyNamespaceUri_1");
nsmgr.AddNamespace("ns2", "urn:MyNamespaceUri_2");
XmlNode idXml = xmlDoc.SelectSingleNode("/ns1:MyRootElement/ns1:Color/ns2:Reference/ns2:ID", nsmgr);
if (idXml != null)
Console.WriteLine(idXml.OuterXml);
else
Console.WriteLine("NOT FOUND");
請注意,這兩個名稱空間都注冊了一個名稱,該名稱也用作查詢中的前綴。如果您運行查詢,則輸出為:
<ID xmlns="urn:MyNamespaceUri_2">1616</ID>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/478390.html
上一篇:使用XSLT進行XML轉換:使用遞增變數的檔案名創建多個輸出檔案
下一篇:java中的字串到xml元素
