2

我在 Java 中使用 org.w3c.dom.Document 并插入 EntityReference 节点。这些添加正常,但被 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