我有一個相對複雜的XML消息,我從合作伙伴公司收到。我需要解析XML以使用它。我的工作正常,然後他們改變了所有的消息,現在我的SelectSingleNode命令都沒有工作。SelectSingleNode和namespace - 找不到節點(使用命名空間管理器)
消息的結構。注意帶有嵌入式xml文檔的CDATA對象。不確定這件事情是否重要。我能夠剔除dataContent對象,所以它不應該有所作爲。下面是我加載到XmlDocument的:
<ns5:dataContent xmlns:ns2="http://test/common/v1"
xmlns="http://test/schema/common"
xmlns:ns4="http://test/credentialing/stuff/v1"
xmlns:ns3="http://test/schema/ims/common/v1"
xmlns:ns5="http://test/schema/v1">
<createdBy>Micky</createdBy>
<createdAt>2011-03-08T17:00:27.050-05:00</createdAt>
<ns5:Id>39</ns5:Id>
<ns5:Type>4</ns5:Type>
-- lots more data --
</ns5:dataContent>
我的代碼是相當直截了當
var xmlDoc = new XmlDocument();
xmlDoc.Load(new StringReader(CDATA content));
var xmlNsM = new XmlNamespaceManager(xmlData.NameTable);
xmlNsM.AddNamespace(String.Empty, @"http://test/schema/common\");
xmlNsM.AddNamespace("ns5", @"http://test/schema/v1\");
xmlNsM.AddNamespace("m", @"http://test/message/v1\");
//This works
var order = xmlDoc.ChildNodes[0];
//This returns null
var ID = order.SelectSingleNode("ns5:Id", xmlNsM);
我可以看到xmlDoc中被正確加載。我已經嘗試將所有6個名稱空間添加到xmlNsM,但獲得相同的結果。我的SelectSingleNodes現在都不起作用。
我在這個主題上發現的每一篇文章都說只使用命名空間管理器,但我已經知道這樣,所以它不是一個非常富有成效的下午。
究竟是什麼你加載到'XmlDocument'?只是CDATA內容?如果是這樣,那麼請編輯您的問題以消除無關的XML。 – 2011-03-10 03:18:23