Создание DOM с помощью xerces и Java — как предотвратить экранирование амперсанда

Я использую xerces в Java для создания DOM. Для одного из полей, которое становится текстовым узлом в DOM, данные доставляются из источника, который уже превратил любые специальные символы, отличные от ASCII и/или XML, в их имена или числа объектов, например. "Банан®"

Я знаю, что дизайн системы неверен с точки зрения источника данных, который не должен этого делать, но это вне моего контроля, но мне интересно, есть ли способ каким-то образом предотвратить его побег и превращение в " Банан №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>

person Alan    schedule 11.02.2012    source источник


Ответы (1)


Если бы вы могли каким-то образом объявить его в разделе CDATA, его следует передать как есть.

person hd1    schedule 06.08.2012