XML 转换中的无效字符

Posted

技术标签:

【中文标题】XML 转换中的无效字符【英文标题】:Invalid character in XML transformation 【发布时间】:2021-10-31 14:54:36 【问题描述】:

我有一个带有如下标签的xml文件

<mvaKode>VHØY</mvaKode>

我创建了一个转换器,它将 mvaKode 中的值转换如下

<EXTERNAL_TRANSACTION_CODE>
     <xsl:value-of select="mvaKode"/>
</EXTERNAL_TRANSACTION_CODE>

但是当我进行转换时,我收到以下错误

An invalid character was found in text content. Error processing resource 'http://dse1xdiapp9142:8082/servlet/org.netbeans....

错误是由于 mvaKode 中的 Ø 字符(瑞典字符)引起的。所以这似乎是一个编码问题。

有什么办法可以摆脱这个错误??

非常感谢任何帮助

【问题讨论】:

您的 XML 是由该 servlet 动态生成的还是静态文件? 使用发布的代码无法重现该问题:xsltfiddle.liberty-development.net/jxWZS7U。请提供一个可重现的示例并说明您使用的是哪个处理器。 那么您的 Java 代码从磁盘读取该文件并将其发送到客户端的方式是错误的。显示该代码和 XML 的最小示例。 可能是您的处理器无法处理非 ASCII 字符。或者(更可能的是,恕我直言)您的处理器出于某种原因认为源编码使得字符无效。 正如我所说,XML 和 XSLT 不是问题。在http://dse1xdiapp9142:8082/... URL 下服务 XML 的代码是。 【参考方案1】:

首先,尝试确定 (a) 是否存在存储的文件中的数据被错误编码,或者 (b) 存在对编码的“误解”,从而使文件使用编码 X 进行编码,但是正在使用编码 Y 进行解码。(原因几乎可以肯定是这两个选项之一)。

如果原因是 (a),那么您需要 (i) 修复现有数据,并 (ii) 首先调查数据是如何损坏的,以防止再次发生。

如果原因是 (b),那么您需要在某处修复配置设置,例如在您的 Web 服务器中。

从所提供的信息来看,这就是我们现阶段所能告诉您的所有信息,但希望它可以为您提供足够的询问渠道。

【讨论】:

以上是关于XML 转换中的无效字符的主要内容,如果未能解决你的问题,请参考以下文章

具有无效字符的java xml

使用 XSLT 转换 xml 中的特殊字符

将字符串 XML 片段转换为 Java 中的文档节点

如何将带有参数数组的字符串 xml 转换为 .NET Core 中的对象

如何在转换中使用 xml csv-parser 包? (命名空间给出无效的 obj ref)

如何将 XML 节点内容转换为 VBA 中的字符串?