繁体   English   中英

有没有一种快速的方法来格式化XmlDocument以便在C#中显示?

[英]Is there a quick way to format an XmlDocument for display in C#?

我想输出我的InnerXml属性以在网页中显示。 我想看看各种标签的缩进。 是否有捷径可寻?

这是我前一段时间拼凑起来做的一个小课程。

它假定您使用字符串格式的XML。

public static class FormatXML
{
    public static string FormatXMLString(string sUnformattedXML)
    {
        XmlDocument xd = new XmlDocument();
        xd.LoadXml(sUnformattedXML);
        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        XmlTextWriter xtw = null;
        try
        {
            xtw = new XmlTextWriter(sw);
            xtw.Formatting = Formatting.Indented;
            xd.WriteTo(xtw);
        }
        finally
        {
            if(xtw!=null)
                xtw.Close();
        }
        return sb.ToString();
    }
}

您应该可以使用代码格式化程序执行此操作。 您必须首先将xml编码到页面中。

谷歌有一个很好的预处理器 ,能够可视化XML以及几种编程语言。

基本上,将您的XML放入这样的预标签中:

<pre class="prettyprint"> 
    &lt;link href="prettify.css" type="text/css" rel="stylesheet" /&gt;
    &lt;script type="text/javascript" src="prettify.js">&lt;/script&gt;
</pre>

使用XML Web服务器控件网页上显示xml文档的内容。

编辑:您应该将整个XmlDocument传递给XML Web服务器控件的Document属性以显示它。 您不需要使用InnerXml属性。

如果identation是您唯一的cocern,并且您可以负担得起启动xternall进程,则可以使用HTML Tidy控制台工具(~100K)处理xml文件。

代码是:

tidy --input-xml y --output-xhtml y --indent "1" $(FilePath)

然后,一旦摆脱了特殊的字符,就可以在网页上显示标题字符串。

创建递归函数也很容易做出这样的输出 - 简单地从根开始迭代节点并进入子节点的下一个递归步骤,将identation作为参数传递给每个新的递归调用。

查看免费的Actipro CodeHighlighter for ASP.NET - 它可以整齐地显示XML和其他格式。

或者您对实际格式化XML更感兴趣? 然后看一下XmlTextWriter - 你可以指定像Format(缩进或不缩进)和缩进级别之类的东西,然后将你的XML写出来,例如一个MemoryStream,然后从那里读回一个字符串进行显示。

使用XmlTextWriter并设置XmlWriterSettings以便启用缩进。 如果要将结果字符串写入屏幕,可以将StringWriter用作“临时存储”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM