我如何将StringWriter中的值转换为XML格式。

时间:2014-12-05 11:51:26

标签: c# xml wcf

我已经编写了一个服务,并且我需要一个返回类型作为n XML,我将传递给Client。我在字符串编写器中的值为 - <newdataset> <table> <Slno>1</Slno></table><Name>Andrew</Name><table><Slno>2</Slno><name>Trisha</name></table></newdataset>

我需要返回的是从服务到客户端的正确XML格式。

P.S。 - 它应该有一个像所有XML一样的标题 - 像这样:&lt; ?xml version="1.0" standalone="yes"?>

谢谢,

拿烟<​​/ P>

1 个答案:

答案 0 :(得分:1)

使用DataTable.WriteXml(XmlWriter)重载。然后,creating the XmlWriter时,您可以使用必要的格式选项传递XmlWriterSettings,包括设置settings.OmitXmlDeclaration = false(实际上是默认设置)。因此:

    public static string ToXml(this DataTable dt)
    {
        using (var textWriter = new StringWriter())
        {
            var settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.IndentChars = "    ";
            // settings.OmitXmlDeclaration = false; not necessary since this is the default anyway.
            using (var xmlWriter = XmlWriter.Create(textWriter, settings))
            {
                dt.WriteXml(xmlWriter);
                return textWriter.ToString();
            }
        }
    }

因此给出了输出:

<?xml version="1.0" encoding="utf-16"?>
<newdataset>
    <Name>Andrew</Name>
    <table>
        <Slno>1</Slno>
    </table>
    <table>
        <Slno>2</Slno>
        <name>Trisha</name>
    </table>
</newdataset>

如果您有DataSet,也适用{{1}}。 (由于我不清楚的原因,WriteXml(TextWriter)重载省略了XML声明。)