C# 美化XmlDocument(.NET)的最佳方法?
假设我有一个C# 美化XmlDocument(.NET)的最佳方法?,c#,.net,xml,C#,.net,Xml,假设我有一个System.Xml.XmlDocument,它的InnerXml是: Stan Laureliver Hardy 我想通过添加新行和空白来格式化它: <comedians> <act id="1" type="single" name="Harold Lloyd"/> <act id="2" type="duo" name="Laurel and Hardy"> <member>Stan Laurel&
System.Xml.XmlDocument
,它的InnerXml
是:
Stan Laureliver Hardy
我想通过添加新行和空白来格式化它:
<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
类中查找了一些修饰方法,但没有找到。基本上,您可以使用XmlDocument.Save(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());
}
stringxml=”“;
XmlDocument doc=新的XmlDocument();
doc.LoadXml(xml);
使用(StringWriter sw=new StringWriter())
{
文件保存(软件);
Write(sw.GetStringBuilder().ToString());
}
更新:使用块
试图美化XML就像把口红贴在猪身上:它仍然不会很漂亮。你为什么要美化它?如果是出于编辑目的,VisualStudio在以可读的形式呈现它方面做得相当好。如果是针对用户的,那么他们可能更喜欢在自己喜欢的编辑器或资源管理器中打开。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
对象。您已经测试过了吗?它缩进了吗?还有-1表示不使用块。@Eduardo:doc.Save indents是正确的。我将取消反对票。WriteTo医生没有。你想使用(StringWriter sw=new StringWriter()){doc.Save(sw);Consolw.Write(sw.ToString());}奇怪的是,我尝试了将.WriteTo和.Save都保存到StringWriter,两次StringBuilder.ToString()都没有缩进。是的,但他错了两个原因,这就是他删除它的原因。不要使用XmlTextWriter。此外,还需要使用块。事实证明,缩进只需要XmlDocument.Save本身。如果我不使用using,会发生什么呢?如果你不使用using块,或者对实现IDisposable的对象调用.Dispose(),那么你可能会泄漏内存、句柄等,某处的一个小村庄就会起火。请参阅或谷歌IDisposable-不要厌倦“但它无论如何都会被终结器的宣传所调用。小编辑:在C#中实现它的最佳方式可能也是在VB.NET中实现它的最佳方式。