1

我收到了关于这种格式的 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;
            }

任何帮助将非常感激。

4

3 回答 3

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");

您的代码工作正常。

于 2012-06-19T00:24:32.913 回答
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);
        }
于 2012-06-19T00:28:29.233 回答
0

为此,由于属性位于主文档元素本身,您可以简单地执行

    XmlDocument xml = new XmlDocument();
    xml.LoadXml(xmlText);
    result.Message = xml.DocumentElement["ErrorCode"].InnerText
于 2012-06-19T00:34:09.673 回答