【发布时间】:2023-03-23 21:28:01
【问题描述】:
我正在尝试将来自 ASP.NET Web API 的 XML 响应读取到 DataSet 中,以便我可以将其绑定到 DropDownList。然而,在阅读回复时,我遇到了Data at the root level is invalid. Line 1, position 1.
截图:
WebRequest request = WebRequest.Create("EndPointURL");
request.Method = "GET";
WebResponse response = request.GetResponse();
DataSet ds = new DataSet();
using (StreamReader rdr = new StreamReader(response.GetResponseStream()))
{
ds.ReadXml(rdr); //EXCEPTION Data at the root level is invalid. Line 1, position 1.
}
XML 响应示例:
<ArrayOfPerson xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MySchema">
<Person>
<Address1 xmlns="http://schemas.datacontract.org/2004/07/ClassSchema">123 Main Street</Address1>
<Address2 xmlns="http://schemas.datacontract.org/2004/07/ClassSchema"">None</Address2>
...FOR BREVITY
</Person>
<Person>
..FOR BREVITY
</Person>
.
.
.
</ArrayOfPerson>
我已经成功地调用了 API 的其他端点,所以我有点难过。我在Line 1, position 1 看不到任何看起来像无效 XML 字符的东西。什么可能引发错误?
【问题讨论】:
-
听起来流的开头可能有一个字节顺序标记。
-
该流不需要解码吗?使用什么字符编码?对于调试,您可以将其加载到字符串中并进行检查吗?
-
@dbc 如何验证字节顺序标记确实是问题所在?如果是,我需要在 API 级别还是在我的客户端代码中解决它?