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&T</html>
doc.createTextNode("AT&T")
直接行うと「&」がエスケープされることを知っているので、
- EntityReferencesを保持する、または
- 定義されたエンティティを調べてみましょう、または
- EntityReferenceの子としてエンティティのテキストを入力します。
次のようなインターフェイスを実装する必要があるため、エンティティ参照名を処理する必要があります
interface Xxx {
void addText(String text);
void addEntity(String entName);
...
}