私は(Java + Saxon S9APIを使用して)Saxon XSLT2プロセッサでxmlを変換し、ソースとしてxml-documentsを処理する必要があります。これには、タグ名として無効な文字が含まれているため、ドキュメントビルダーで解析できません。
例:
<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の行全体を削除するだけでなく、より堅牢なソリューションを探しています。
気が遠くなると、無効な文字列を識別するための正規表現を思い付くことができましたが、属性と子ノードを含むノードの削除に苦労しました。
ご協力ありがとうございました!