C# 将xml字符串读入数据集
我从web api获取xml内容。xml内容是在控制器中转换为xml并作为字符串返回的数据表 我尝试在数据集中重新读取它,如下所示:C# 将xml字符串读入数据集,c#,xml,asp.net-web-api,C#,Xml,Asp.net Web Api,我从web 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()) usin
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>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"><DocumentElement>
<tablename>
<id>734</id>
<name>734</name>
</tablename>
</DocumentElement></string>
734
734
xml字符串看起来像这样是正常的吗?绝对不是
您应该首先修复结果
:
results = System.Web.HttpUtility.HtmlDecode(results);
然后,结果将如下所示:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"><DocumentElement>
<tablename>
<id>734</id>
<name>734</name>
</tablename>
</DocumentElement></string>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"><DocumentElement>
<tablename>
<id>734</id>
<name>734</name>
</tablename>
</DocumentElement></string>
734
734
我认为您应该让控制器操作返回一个datatable对象,然后默认情况下Web API框架会自动将其转换为XML,但XML可能很难读取。
这是我试过的代码