这是相关的(C#.NET)代码:
WebRequest webRequest = System.Net.WebRequest.Create(authenticationUrl);
UTF8Encoding encoding = new UTF8Encoding();
...
var webResponse = webRequest.GetResponse();
var webResponseLength = webResponse.ContentLength;
byte[] responseBytes = new byte[webResponseLength];
webResponse.GetResponseStream().Read(responseBytes, 0, (int)webResponseLength);
var responseText = encoding.GetString(responseBytes);
webResponse.Close();
这是值的responseText
样子(在调试上述代码时从 Visual Studio 复制):
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<responseblock version=\"3.67\">\n <requestreference>X3909254</requestreference>\n <response type=\"ERROR\">\n <timestamp>2012-04-16 13:53:59</timestamp>\n <error>\n <message>Invalid field</message>\n <code>30000</code>\n <data>baseamount</data>\n </error>\n </response>\n</responseblock>\n"
\"
为什么响应中似乎有转义字符(例如)?这是由于我将响应流转换为字符串的方式吗?我应该怎么做(以便可以将存储在变量中的值responseText
解析为“标准”XML)?
更新——我使用的更多代码:
var resultXML = XElement.Parse(responseText);
...
int errorCode = (int)(resultXML.Element("error").Element("code"));
问题是该元素error
不是根元素的直接子元素resultXML
,因此我显然无法引用error
(或其子元素code
)。