问候所有人。
当我将REST请求的结果加载到XmlDocument中时,我收到了一个asp.net错误“Root元素缺失”。当我使用Firefox插件“RESTTEST”执行它时,相同的REST请求看起来很好并返回有效结果。但是错误出现在C#.net代码隐藏中。有谁知道这会导致什么?以下是相关代码:
HttpWebResponse response = null;
response = (HttpWebResponse)request.GetResponse();
HttpStatusCode statusCode = response.StatusCode;
Stream responseData = response.GetResponseStream();
StreamReader sr = new StreamReader(responseData);
XmlTextReader reader = new XmlTextReader(sr);
XmlDocument doc = new XmlDocument();
doc.Load(sr); // here is where the error occurs.
我的目标是将REST请求的结果加载到可遍历的XML数据模型中,然后我可以从中获取元素及其值。
当我使用此代码时,我得到了预期的结果。有什么区别?
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // The node is an Element.
Response.Write("Element Name: " + reader.Name);
while (reader.MoveToNextAttribute()) // Read attributes.
Response.Write(" " + reader.Name + "='" + reader.Value + "'");
Response.Write("<br />");
break;
case XmlNodeType.Text: //Display the text in each element.
Response.Write("Element value: " + reader.Value);
Response.Write("Read key=" + reader.Name + ", value=" + reader.Value + "<br/>");
break;
case XmlNodeType.EndElement: //Display end of element.
Response.Write("<br />");
break;
}
}
答案 0 :(得分:1)
看起来XML是一个片段而不是一个完整形成的XML文档 - 这就是它没有根的原因。要使其工作,您必须配置XMLDocument对象以接受片段...
答案 1 :(得分:0)
尝试使用sr.ReadToEnd()
查看返回给您的内容。它可能是一个空字符串。
此外,如果您使用的是.NET 2.0或更高版本,则应使用XmlReader.Create
; {@ 1}}已被弃用。
有关使用XML序列化的示例,请参阅A REST Client Library for .NET, Part 1。 (对不起,没有第2部分。)