我从网络API获取xml内容。 xml内容是一个数据表,它在控制器中转换为xml并作为字符串返回。
我尝试在数据集中将其读回如下:
var results = response.Content.ReadAsStringAsync().Result;
DataTable dt = new DataTable();
byte[] xmlBytes = Encoding.UTF8.GetBytes(results);
using (DataSet ds = new DataSet())
using (MemoryStream ms = new MemoryStream(xmlBytes))
{
ds.ReadXml(ms);
dt = ds.Tables[0];
}
然而,数据集是空的。
web api控制器操作执行以下操作:
string xml = string.Empty;
using (DataTable dt = GetResultsAsDataTable())
{
if (dt != null)
{
using (StringWriter sw = new StringWriter())
{
dt.WriteXml(sw, true);
xml = sw.ToString();
}
}
}
字符串如下所示:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"><DocumentElement>
<tablename>
<id>734</id>
<name>734</name>
</tablename>
</DocumentElement></string>
xml字符串看起来像这样正常吗?
答案 0 :(得分:0)
绝对不是。
您应首先修复results
:
results = System.Web.HttpUtility.HtmlDecode(results);
然后,results
将如下所示:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"><DocumentElement>
<tablename>
<id>734</id>
<name>734</name>
</tablename>
</DocumentElement></string>
答案 1 :(得分:0)
我认为你应该让你的控制器动作返回一个数据表对象,然后Web API框架默认会自动将它转换为XML,但XML可能很难阅读。 这是我尝试过的代码,C# Code,returned XML