我在Java中使用xerces来构建DOM。对于成为DOM中的文本节点的字段之一,数据从已经将任何非ASCII和/或XML特殊字符转换为其实体名称或数字的源传送,例如, “Banana和安培;#174;”
我知道系统的设计是错误的,数据源不应该这样做,但这是我无法控制的,但我想知道的是,是否有办法以某种方式防止这种情况被转义和变成了“Banana& amp;#174;”没先解码? (我知道它会隐式转换它需要的任何字符,所以我可以在解码后输入原始字符。)
示例代码:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.newDocument();
Element root = dom.createElement("Companies");
dom.appendChild(root);
Element company = dom.createElement("Company");
Text t = dom.createTextNode("Banana®");
company.appendChild(t);
root.appendChild(company);
DOMImplementationRegistry dir = DOMImplementationRegistry.newInstance();
DOMImplementationLS impl =
(DOMImplementationLS)dir.getDOMImplementation("LS");
LSSerializer writer = impl.createLSSerializer();
LSOutput output = impl.createLSOutput();
output.setByteStream(System.out);
writer.write(dom, output);
示例输出:
<?xml version="1.0" encoding="UTF-8"?>
<Companies><Company>Banana&#174;</Company></Companies>
答案 0 :(得分:0)
如果你能以某种方式在CDATA部分声明它,它应该按原样传递。