首页 > 解决方案 > Javascript XML 解析器无法在 Firefox 上运行

问题描述

我需要将美化的 XML 输出到 HTML 表中。我在片段中使用了这个解析器,它在 chrome 上运行良好,但在 FF 上不起作用。

var prettifyXml = function(sourceXml) {
  var xmlDoc = new DOMParser().parseFromString(sourceXml, 'application/xml');
  var 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" version="1.0">',
    '  <xsl:strip-space elements="*"/>',
    '  <xsl:template match="para[content-style][not(text())]">', // change to just text() to strip space in text nodes
    '    <xsl:value-of select="normalize-space(.)"/>',
    '  </xsl:template>',
    '  <xsl:template match="node()|@*">',
    '    <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>',
    '  </xsl:template>',
    '  <xsl:output indent="yes"/>',
    '</xsl:stylesheet>',
  ].join('\n'), 'text/xml');


  var xsltProcessor = new XSLTProcessor();
  xsltProcessor.importStylesheet(xsltDoc);
  var resultDoc = xsltProcessor.transformToDocument(xmlDoc);
  var resultXml = new XMLSerializer().serializeToString(resultDoc);
  return resultXml;
};

var prettyXml = prettifyXml('<root><node/></root>');
document.querySelector('.output-holder').value = prettyXml;
<body>
  <div>Pretty XML output follows...</div>
  <textarea class="output-holder" rows="10" cols="30"></textarea>
</body>

你们能帮帮我吗?谢谢你。

编辑:这是所需的结果(适用于 chrome):

<root>
   <node/>
</root>

这是 Firefox 上的输出:

<root><node/></root>

标签: javascripthtmldomparser

解决方案


推荐阅读