如何在HTML的code标签中显示带缩进的XML?

22 浏览
0 Comments

如何在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)
    

0
0 Comments

问题原因:用户想要在HTML的代码标签中显示缩进的XML内容。

解决方法:

第一步是使用XSLT的身份变换和指令处理XML文档:

当在任何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

0
0 Comments

在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中的<和>替换为&lt;和&gt;,我还能使用XSLT吗?2)我需要在哪里附加XSLT?

0