【问题标题】:Handling special characters in XML when transforming with Saxon使用 Saxon 进行转换时处理 XML 中的特殊字符
【发布时间】:2009-09-09 16:11:01
【问题描述】:

我正在尝试使用 Saxon 将样式表应用于 XML 文档。给定一个在 Microsoft Word 中生成并具有 Microsoft Word 样式引号的 XML 文件,例如以下文档中的 FOO 周围

<?xml version="1.0" encoding="UTF-8"?>
<doc>
    <act>
        <performer typeCode=“FOO“ />
        <performer typeCode="BAR" />
    </act>
</doc>

Saxon 抛出以下错误:

SXXP0003: Error reported by XML parser: Invalid byte 1 of 1-byte UTF-8 sequence.

在 XML 中处理这些类型的“特殊”字符的最佳方法是什么,这些字符原本是有效的,但在实际解析/转换中会中断?

【问题讨论】:

  • “特殊字符”这个词是我的 XML/XSLT 编程存在的祸根。最好的办法是在发送到 XML 解析器之前清理文件。

标签: java xml utf-8 saxon


【解决方案1】:

由于上述不是有效的 XML,您必须对输入进行一些预处理(例如使用 FilterReader),因为几乎任何 XML 解析器都会指示错误(通常是致命错误,因此您不能处理错误并继续)。

如果特殊引号仅在 xml 中,您可以用普通引号简单地替换特殊引号(如果您必须检查编码类型的序言,则需要做更多工作)。如果您想在文档的其他地方保留特殊引号,您将不得不做一些更复杂的事情(主要是跟踪您是否在标签中)。

【讨论】:

    【解决方案2】:

    问题是那些“特殊”引号不是有效的 xml。 Saxon 或任何其他 xml 解析器将把这些东西扔掉而不解析文档。

    我唯一能建议的就是搜索和替换那些并用预期的引号替换它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 2017-07-21
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 2015-06-18
      • 2020-04-13
      相关资源
      最近更新 更多