将xml字符串读入数据集

时间:2014-03-25 13:23:20

标签: c# xml asp.net-web-api

我从网络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字符串看起来像这样正常吗?

2 个答案:

答案 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# Codereturned XML