Я использую xerces в Java для построения DOM.Для одного из полей, которое становится текстовым узлом в DOM, данные доставляются из источника, который уже превратил любые специальные символы, отличные от ASCII и / или XML, в имена или номера своих сущностей, например «Banana®»
Я знаю, что дизайн системы неправильный с точки зрения источника данных, который не должен делать этого, но это вне моего контроля, но меня интересует, есть ли способ как-то предотвратить это и избежатьпревратился в "банан" # 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>