如何在HTML的code标签中显示带缩进的XML?
如何在HTML的code标签中显示带缩进的XML?
我想在一个html页面中的
标签中显示缩进的XML。
我从javascript函数中获取XML,如下所示:
new XMLSerializer()).serializeToString(newXMLDoc)
这给我带来了意外的XML字符串。
我能想到的一种方法是使用
- 和
。
但是有没有更好的方法呢?
XSLT能在这种情况下帮助我吗(抱歉我不太了解XSLT
)?如果可以,在哪里需要附加XSLT样式表,是在html文档中还是在附加到
标签的xmlString
中。
这只是一个客户端应用,我无法在服务器端做任何操作。
更新:我还将xmlString中的<和>替换为<
和>
,我还能使用XSLT吗?
即使应用了Dimitre Novatchev提供的XSLT,我仍然没有得到缩进的文本,尽管我在使用SAXON解析器kernow时可以看到XML被缩进,但是当我在我的javascript代码中处理时,我得到的是相同的未缩进代码。
//var xslt contains the XSLT provided by Dimitre Novatchev as string //var XMLDoc is the XMLDocument object to be transformed xsltProcessor=new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); newXMLDoc = xsltProcessor.transformToDocument(xml,document); //This is how I am converting the transformed XML to string return (new XMLSerializer()).serializeToString(newXMLDoc)
问题原因:用户想要在HTML的代码标签中显示缩进的XML内容。
解决方法:
第一步是使用XSLT的身份变换和
当在任何XML文档上应用此转换时(例如上面的示例),
大多数XSLT处理器(.NET XslCompiledTransform,Saxon 6.5.4和Saxon 9.0.0.2,AltovaXML)都会生成所需的结果:
第二步是对结果执行字符串替换操作,将任何"<"字符替换为"<"字符串。
如果您想要更加漂亮格式的显示,可以查看XPath Visualizer如何使用XSLT实现此目的。
这个建议的解决方案非常完美(感谢Dimitre),但对于使用.NET的用户,请检查这个链接,因为默认情况下XmlWriter不会缩进您的XML,并且不会自动使用xslt中指定的设置。
链接:stackoverflow.com/a/5931224/1305893
在HTML的code标签内显示缩进的XML的方法及原因
有一个问题是如何在HTML的code标签内显示缩进的XML。一个解决方法是使用服务器端代码,将格式化的HTML XML发送给客户端。使用XSLT可以帮助你实现这个目标。但是需要注意的是,在服务器端你需要对XML进行HTML编码。
如果你从文档中删除了换行符(\n)和其他空格字符(如空格、制表符等),那么你需要在客户端查找类似于“客户端文档格式化器”等内容。编写这样的工具并不容易。
另外,你还可以使用XML的语法高亮器。一个很好的例子可以在这里找到:http://alexgorbatchev.com/SyntaxHighlighter/。然后你可以简单地使用以下代码:
<pre class='brush: xml;'> // XML在这里。 </pre>
这只是一个客户端应用程序,我没有任何服务器端代码,而且我已经在使用google-code prettify来美化XML,但它只提供了语法高亮。
然后看看这个问题:http://stackoverflow.com/questions/376373。
HTML编码XML是什么意思?我需要将XSLT附加到XML文档中还是附加到HTML的头部?
不,这是针对服务器端解决方案的。
所以我现在只有两个问题,1)我还将xmlString中的<和>替换为<和>,我还能使用XSLT吗?2)我需要在哪里附加XSLT?