2012-06-19 29 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