我有一些非常基本的XML:模式問題是否會阻止SelectNodes()查找節點?
<ReconnectResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://platform.intuit.com/api/v1">
<ErrorMessage/>
<ErrorCode>0</ErrorCode>
<ServerTime>2012-01-04T19:21:21.0782072Z</ServerTime>
<OAuthToken>redacted</OAuthToken>
<OAuthTokenSecret>redacted</OAuthTokenSecret>
</ReconnectResponse>
簡單,對不對?
所以當我想要得到ErrorCode
的值時,我的XPath經驗告訴我試試/ReconnectResponse/ErrorCode/text()
。這個工程在記事本++配備了XML工具插件,所以讓我們嘗試在C#:
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlString);
var namespaceMan = new XmlNamespaceManager(xmlDoc.NameTable);
Console.WriteLine(xmlDoc.SelectSingleNode(@"/ReconnectResponse/ErrorCode", namespaceMan).InnerText);
我得到一個異常:未設置爲一個對象的實例
對象引用。
這聽起來像是發現指定節點的問題。鑑於XML是多麼簡單,我正在努力解決出了什麼問題。
一時興起,我將XML放入XMLQuire。這會給每種元素類型帶來XSD架構錯誤,如下所示:
無法找到元素'http://platform.intuit.com/api/v1:ReconnectResponse'的模式信息。
所以,我的問題是模式錯誤是否可能導致SelectSingleNode()
錯過我的節點?次要問題:我該如何解決它?
不知道爲什麼我沒有斑的LINQ to XML - 顯然是要走的路! –