2012-06-19 32 views
1

我有一個獲得這個格式的XML響應如何讀取一個XML節點以這種格式

<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n 
     <PlatformResponse xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://platform.intuit.com/api/v1\">\r\n 
<ErrorMessage>OAuth Token rejected</ErrorMessage>\r\n 
<ErrorCode>270</ErrorCode>\r\n 
<ServerTime>2012-06-19T00:01:31.5150146Z</ServerTime>\r\n 
</PlatformResponse> 

我需要搶在<ErrorCode>節點的值,我做了以下內容,但它沒有得到任何價值..

  XmlDocument xml = new XmlDocument(); 
      xml.LoadXml(xmlResponse); 

      XmlNodeList xnList = xml.SelectNodes("PlatformResponse"); 
      foreach (XmlNode xn in xnList) 
      { 
       result.Message = xn["ErrorCode"].InnerText; 
      } 

任何幫助將不勝感激。

回答

1

人們似乎在這竟然放棄問題您PlatformResponse節點中的某些污垢,(的xmlns:XSD =等等)

使用此XML

String sXml = @"<?xml version='1.0' encoding='utf-8'?> 
    <PlatformResponse > 
     <ErrorMessage>OAuth Token rejected</ErrorMessage> 
     <ErrorCode>270</ErrorCode> 
     <ServerTime>2012-06-19T00:01:31.5150146Z</ServerTime> 
    </PlatformResponse>"; 

而選擇像

XmlNodeList xnList = xml.SelectNodes("/PlatformResponse"); 

你的代碼工作正常。

+0

如果只有一個錯誤代碼,直接抓取值,使用:'XmlNode errNode = doc.SelectSingleNode(「/ PlatformResponse/ErrorCode」);'然後參考'errNode.InnerText' – mj82

0

我只是測試的代碼,它很好地工作:

 XmlDocument xml = new XmlDocument(); 
     XmlTextReader reader = new XmlTextReader("Path_to_your_xml"); 
     xml.Load(reader); 
     XmlNodeList xnList = xml.SelectNodes("PlatformResponse"); 
     foreach (XmlNode xn in xnList) 
     { 
      MessageBox.Show(xn["ErrorCode"].InnerText); 
     } 
0

對於這一點,因爲該屬性是主要的文檔元素本身,你可以簡單地做

XmlDocument xml = new XmlDocument(); 
    xml.LoadXml(xmlText); 
    result.Message = xml.DocumentElement["ErrorCode"].InnerText