1

javax.xml.transform.Transformer を使用して HTML コンテンツを取得し、XML ドキュメントに解析しています (これを行うために Crouton/TagSoup の組み合わせを使用しています)。ただし、これは私の問題であるため、それほど重要ではないと思います。

Transformer.transform() プロセスの出力をダンプすると、出力で、©実際のシンボル (この場合は著作権シンボル) に変換されていることがわかります。

最終的に、このコンテンツは HTML ファイルとして再保存されますが©、ファイルに表示される代わりに、この特殊文字が挿入されます。これは、HTML 標準では使用すべきではありません。

既にエンコードされた HTML 文字が実際のシンボルに変換されるのをトランスフォーマーが無視するようにする方法はありますか?

4

3 に答える 3

3

次のことを試すことができますtransformer.setOutputProperty(OutputKeys.ENCODING, "ASCII")。このように、すべての非ASCII文字は文字エンティティを使用する必要があります。

于 2012-05-14T19:00:10.663 に答える
2

XSLT 2.0の場合は、文字コード表を使用できます。誰かがすべてのHTML文字エンティティを定義する文字コード表を作成したと思います。

ただし、Javaであるため、Saxonの使用を妨げるものは何もありません。また、Saxonにはシリアル化属性saxon:character-representation = "entity"があり、これはあなたが望むことを実行しているようです(ただし、すべてのHTML定義エンティティを理解しているわけではありません。ラテン語のもののみ-1。)

于 2012-05-09T20:42:06.993 に答える
0

これは私の元の質問に対する適切な解決策ではありませんが、これは私をうまくやっている回避策です。

HTML エンティティが変換されているため、コンテンツ文字列を送信する前に、正規表現を使用してエンティティを別の形式に「変換」し、パーサー/トランスフォーマーが認識しないようにします。

次に、発信文字列で、別の正規表現を使用してそれらを HTML エンティティに変換し直します。

于 2012-05-18T15:27:31.020 に答える