【问题标题】:XML Charset Conversion ToolXML 字符集转换工具
【发布时间】:2020-07-04 12:15:57
【问题描述】:

我有一堆采用 iso-8859-1 编码的 xml 文件(如数百个),并希望将它们转换为 utf-8。所以我需要一个工具来转换字符并替换现在的 xml 标头。当它们被解释为 UTF-8 时,所有的特殊字符(如 ö、ä、ü 等)都会被破坏。理想情况下,它还将验证和修复缩进。我在网上找到了几种用于在编码之间进行转换的工具,但我需要一个用于 xml 的工具,它也可以替换标题,并且能够对文件夹和子文件夹中的所有 xml 文件执行此操作,理想情况下忽略其他文件。它也最好是免费的。有人知道这样的工具吗?

【问题讨论】:

  • 一个 XSLT 就可以完成这项工作,即 XML 序言、编码和缩进。
  • 如果我理解正确的话,这样就很难让它在文件夹中的所有文件中实际替换它?
  • 只是一个批处理文件,它将遍历目录并将单个通用 XSLT(身份转换)应用于所有 XML 文件。

标签: xml utf-8 character-encoding


【解决方案1】:

这是一个通用的所谓的身份转换 XSLT。 所有<xsl:output 标签属性都将完全满足您的需求。

XSLT

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output  method="xml" indent="yes" encoding="utf-8" omit-xml-declaration="no"/>

    <xsl:strip-space elements="*"/>

    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

【讨论】:

  • 好的,谢谢。所以我必须使用批处理脚本来调用例如所有 xml 文件的 msxsl.exe,对吗?
  • 好的...似乎是我想要的一半。我只是努力让 msxsl.exe 覆盖输入文件。这真的不可能吗?
  • 最好创建原始 XML 文件的副本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 2013-03-17
  • 2019-01-22
  • 2011-02-10
  • 1970-01-01
相关资源
最近更新 更多