2012-02-11 71 views
1

我在Java中使用xerces构建DOM。对于其中一个成为DOM中的文本节点的字段,正在将数据从已经将任何非ASCII和/或XML特殊字符转换为其实体名称或数字的源(例如, “香蕉®”使用xerces和Java构建DOM - 如何防止&符号转义

我知道系统的设计是错误的,数据源不应该这样做,但这是超出我的控制,但我想知道的是,如果有一种方法来以某种方式防止这个从逃脱并变成“香蕉& 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&amp;#174;</Company></Companies> 

回答

0

如果你能以某种方式在CDATA部分声明,它应是穿过。