使用Saxon进行转换时处理XML中的特殊字符

时间:2009-09-09 16:11:01

标签: java xml utf-8 saxon

我正在尝试使用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中处理这些类型的“特殊”字符的最佳方法是什么?这些字符旨在有效但在实际的解析/转换中会中断?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

麻烦的是那些'特殊'引号是无效的xml。 Saxon或任何其他xml解析器将抛出那些东西而不解析文档。

我唯一可以建议的是搜索并替换它们并用预期的引号替换它们。