2

Javaでorg.w3c.dom.Documentを使用し、EntityReferenceノードを挿入しています。これらはOKで追加されますが、javax.xml.transform.Transformerによって削除されます。このコードは私が何を意味するかを説明しています:

    DOMImplementation dmi = DOMImplementationRegistry.newInstance().getDOMImplementation("");
    Document doc = dmi.createDocument(null, "html", null);
    doc.getDocumentElement().appendChild(doc.createTextNode("AT"));
    doc.getDocumentElement().appendChild(doc.createEntityReference("amp"));
    doc.getDocumentElement().appendChild(doc.createTextNode("T"));
    Transformer tr = TransformerFactory.newInstance().newTransformer();
    tr.setOutputProperty(OutputKeys.METHOD, "html");
    tr.transform(new DOMSource(doc), new StreamResult(System.out));

これの出力は

<html>ATT</html>

そして私は欲しい

<html>AT&amp;T</html>

doc.createTextNode("AT&T")直接行うと「&」がエスケープされることを知っているので、

  • EntityReferencesを保持する、または
  • 定義されたエンティティを調べてみましょう、または
  • EntityReferenceの子としてエンティティのテキストを入力します。

次のようなインターフェイスを実装する必要があるため、エンティティ参照名を処理する必要があります

interface Xxx {
 void addText(String text);
 void addEntity(String entName);
 ...
}
4

0 に答える 0