Я использую 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&#174;</Company></Companies>