美化XmlDocument(.NET)的最佳方法是什么?

时间:2009-07-21 18:21:54

标签: c# .net xml

假设我有System.Xml.XmlDocument InnerXml

<comedians><act id="1" type="single" name="Harold Lloyd"/><act id="2" type="duo" name="Laurel and Hardy"><member>Stan Laurel</member><member>Oliver Hardy</member></act></comedians>

我想这样格式化,添加换行符和空格:

<comedians>
    <act id="1" type="single" name="Harold Lloyd"/>
    <act id="2" type="duo" name="Laurel and Hardy">
        <member>Stan Laurel</member>
        <member>Oliver Hardy</member>
    </act>
</comedians>

我在XmlDocument课程中查找了一些美化方法,但找不到一个。

3 个答案:

答案 0 :(得分:5)

基本上,您可以使用XmlDocument.Save(Stream)并将任何Stream作为目标传递以接收xml内容。包括“仅限内存”StringWriter,如下所示:

string xml = "<myXML>";

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);

using(StringWriter sw = new StringWriter())
{
    doc.Save(sw);
    Console.Write(sw.GetStringBuilder().ToString());
}

更新:使用块

答案 1 :(得分:0)

Jon Galloway发布了一个答案并删除了它,但它实际上是我的最佳选择。它有点像这样:

StringBuilder Prettify(XmlDocument xdoc)
{
    StringBuilder myBuf = new StringBuilder();
    XmlTextWriter myWriter = new XmlTextWriter(new StringWriter(myBuf));
    myWriter.Formatting = Formatting.Indented;
    xdoc.Save(myWriter);
    return myBuf;
}

无需创建XmlWriterSettings对象。

答案 2 :(得分:-2)

尝试美化XML就像把口红放在猪身上:)它仍然不会很漂亮。

你为什么试图美化它?如果是出于编辑目的,Visual Studio可以很好地以可读的形式呈现它。如果是针对用户,那么他们可能更愿意在他们的首选编辑器或资源管理器中打开。