2009-11-19 98 views
12

以我的XML的這個simplifed例如:SelectSingleNode總是返回null?

<?xml version="1.0"?> 
<message xmlns="http://www.mydomain.com/MyDataFeed" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mydomain.com/MyDataFeed https://secure.mydomain/MyDataFeed/myDataFeed.xsd" requestId="13898" status="1"> 
<error>Invalid Login</error> 
</message> 

我嘗試使用selectSingleNode方法選擇「錯誤」的節點,但是使用下面的代碼,它總是返回NULL?

XmlNode errorNode = oss.SelectSingleNode("/message/error"); 
if (errorNode != null) 
    Console.Writeline("There is an error"); 

從研究我做了這個與命名空間有關,但我根本無法得到任何工作。有什麼建議?

回答

21

您錯過了SelectSingleNode調用中由<message>節點定義的XML名稱空間。假設oss是一個XmlDocument情況下,你需要做的是:

XmlNamespaceManager nsMgr = new XmlNamespaceManager(oss.NameTable); 
nsMgr.AddNamespace("ns", "http://www.mydomain.com/MyDataFeed"); 

XmlNode errorNode = oss.SelectSingleNode("/ns:message/ns:error", nsMgr); 

馬克

+0

當然的,但! XML格式有很多可以回答的問題。 – 2011-05-16 05:34:39