C# 将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

我从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())
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可能很难读取。 这是我试过的代码