我想输出我的InnerXml属性以便在网页中显示。我想看看各种标签的缩进。有一个简单的方法吗?
答案 0 :(得分:18)
这是我前一段时间拼凑起来的一个小课程。
它假定您使用字符串格式的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();
}
}
答案 1 :(得分:1)
您应该可以使用代码格式化程序执行此操作。你必须首先将xml编码到页面中。
Google拥有a nice prettifyer能够可视化XML以及多种编程语言。
基本上,将您的XML放入这样的预标签中:
<pre class="prettyprint">
<link href="prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="prettify.js"></script>
</pre>
答案 2 :(得分:0)
使用XML Web Server Control在网页上显示xml文档的内容。
编辑:您应该将整个XmlDocument传递给XML Web服务器控件的Document属性以显示它。您不需要使用InnerXml属性。
答案 3 :(得分:0)
如果identation是您唯一的cocern,并且您能负担得起启动xternall进程,则可以使用HTML Tidy控制台工具(~100K)处理xml文件。
代码是:
tidy --input-xml y --output-xhtml y --indent "1" $(FilePath)
然后,一旦摆脱了特殊的字符,就可以在网页上显示标题字符串。
创建递归函数也很容易做出这样的输出 - 简单地从根开始迭代节点并进入子节点的下一个递归步骤,将identation作为参数传递给每个新的递归调用。
答案 4 :(得分:0)
查看ASP.NET的免费Actipro CodeHighlighter - 它可以整齐地显示XML和其他格式。
或者您对实际格式化XML更感兴趣?然后看一下XmlTextWriter - 你可以指定格式(缩进与否)和缩进级别之类的东西,然后将你的XML写出来,例如:一个MemoryStream,然后从那里读回一个字符串进行显示。
马克
答案 5 :(得分:0)
在设置XmlWriterSettings时使用XmlTextWriter,以便启用缩进。如果要将结果字符串写入屏幕,可以将StringWriter用作“临时存储”。