我使用 Saxon XSLT2 处理器(使用 Java + Saxon S9API)转换 xml,并且必须处理 xml 文档作为源,其中包含无效字符作为标记名称,因此无法由文档生成器解析。
例子:
<A>
<B />
<C>
<D />
</C>
<E!_RANDOM_ />
< />
</A>
代码:
import net.sf.saxon.s9api.*;
[...]
/* XSLT Processor & Compiler */
proc = new Processor(false);
/* build document from input*/
XdmNode source = proc.newDocumentBuilder().build(new StreamSource(input));
错误:
Error on line X column Y
SXXP0003: Error reported by XML parser: Element type
"E" must be followed by either attribute specifications, ">" or "/>".
感叹号和只是空格的标签名称是我目前唯一的无效标签。我正在寻找更强大的解决方案,而不仅仅是删除(格式化)xml 的整行。
经过一番折腾,我可以想出一个正则表达式来识别无效字符串,但会在删除包含属性和子节点的节点时遇到困难。
谢谢您的帮助!