假设我有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
课程中查找了一些美化方法,但找不到一个。
答案 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可以很好地以可读的形式呈现它。如果是针对用户,那么他们可能更愿意在他们的首选编辑器或资源管理器中打开。