我有一个包含XML的Java字符串,没有换行符或缩进.我想把它变成一个格式很好的XML的字符串.我该怎么做呢?
String unformattedXml = "<tag><nested>hello</nested></tag>";
String formattedXml = new [UnknownClass]().format(unformattedXml);
Run Code Online (Sandbox Code Playgroud)
注意:我的输入是一个字符串.我的输出是一个字符串.
(基本)模拟结果:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<tag>
<nested>hello</nested>
</tag>
</root>
Run Code Online (Sandbox Code Playgroud) 我知道有两种方法可以"漂亮地打印"或格式化xml:
shell工具 Hack 38 Pretty-Print XML使用通用标识样式表和Xalan
有什么其他免费(如啤酒)格式化器?(除了使用javascript)
我想在html页面中显示缩进的XML,<code></code>
我从javascript函数获取XML
new XMLSerializer()).serializeToString(newXMLDoc)
这给了我无意的XML字符串.
我能想到的一种方法是使用<ul>
和<li>
但有更好的方法吗?
在这种情况下,XSLT可以帮助我(对不起,我不太了解XSLT
).如果是,我需要在html文档中或在xmlString
我附加到<code></code>
标记的XSLT样式表中附加XSLT样式表.
它只是一个客户端应用程序我不能在服务器端做任何事情.
更新:我也替换<和>与的xmlString <
并且>
我还可以使用XSLT?
即使在应用了Dimitre Novatchev给出的XSLT之后,我也没有得到缩进文本,虽然我可以看到XML在使用SAXON解析器kernow应用XSLT时缩进但是当我在我的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)
Run Code Online (Sandbox Code Playgroud) 在JavaScript中漂亮打印xml的最佳方法是什么?我通过ajax调用获取xml内容,在textarea中显示此请求之前,我想格式化它,以便它看起来很好看:)
我想美化一些 XML,我发现了以下代码(在这个答案中,JSFiddle)。我这样修改:
const xsltDoc = new DOMParser().parseFromString([
// describes how we want to modify the XML - indent everything
'<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">',
' <xsl:output omit-xml-declaration="yes" indent="yes"/>',
' <xsl:template match="node()|@*">',
' <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>',
' </xsl:template>',
'</xsl:stylesheet>',
].join('\n'), 'application/xml');
function prettifyXml(sourceXml) {
var xmlDoc = new DOMParser().parseFromString(sourceXml, 'application/xml');
var xsltProcessor = new XSLTProcessor();
// Error happens here:
xsltProcessor.importStylesheet(xsltDoc);
var resultDoc = xsltProcessor.transformToDocument(xmlDoc);
var resultXml = new XMLSerializer().serializeToString(resultDoc);
return resultXml;
};
Run Code Online (Sandbox Code Playgroud)
运行代码时出现错误,但错误没有任何消息。在 Firefox 控制台中看起来像这样:
这是我在调试器中看到的:
该错误也确实发生在原始答案的小提琴中。我想知道这是什么类型的错误以及如何修复它。
我包含 Firefox 标签,因为我认为这不是正常的浏览器行为。我的版本是61.0.2(64位)。
我正在使用ACE Editor在我的网页上显示xml内容.我想在Editor中格式化xml代码.
可以任何人告诉我该怎么做?
xml ×4
javascript ×3
pretty-print ×3
xslt ×2
ace-editor ×1
domparser ×1
firefox ×1
html ×1
indentation ×1
java ×1
prettify ×1