![](/img/trans.png)
[英]Quick way SqlXml to XmlDocument in C# for a SQLCLR function?
[英]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">
<link href="prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="prettify.js"></script>
</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.