Сохраняйте числовые символы, такие как `& # 10; & # 13; `при разборе XML в Java

Я анализирую XML, который содержит числовые символьные символы, такие как (но не ограничиваясь)&#10; &#13; &lt; &gt; (перевод строки <>) в Java. При разборе я добавляю текстовое содержимое узлов в StringBuffer, чтобы позже записать его в текстовый файл.

Однако эти символы Юникода разрешаются или преобразуются в символы новой строки / пробелы, когда я записываю строку в файл или распечатываю ее.

Как я могу сохранить исходные символы символов числовых сущностей при итерации по узлам XML-файла в Java и сохранении узлов текстового содержимого в строку?

Пример демонстрационного XML-файла:

<?xml version="1.0" encoding="UTF-8"?>
<ABCD version="2">    
    <Field attributeWithChar="A string followed by special symbols &#13;  &#10;" />
</ABCD>

Пример кода Java. Он загружает XML, выполняет итерации по узлам и собирает текстовое содержимое каждого узла в StringBuffer. После завершения итерации он записывает StringBuffer на консоль, а также в файл (но нет&#10; &#13;) символы.

Как можно сохранить эти символы при сохранении их в строку? Не могли бы вы мне помочь? Спасибо.

public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException {   
    DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
    Document document = null;
    DocumentBuilder documentBuilder = documentFactory.newDocumentBuilder();
    document = documentBuilder.parse(new File("path/to/demo.xml"));
    StringBuilder sb = new StringBuilder();

    NodeList nodeList = document.getElementsByTagName("*");
    for (int i = 0; i < nodeList.getLength(); i++) {
        Node node = nodeList.item(i);
        if (node.getNodeType() == Node.ELEMENT_NODE) {
            NamedNodeMap nnp = node.getAttributes();
            for (int j = 0; j < nnp.getLength(); j++) {
                sb.append(nnp.item(j).getTextContent());
            }
        }
    }
    System.out.println(sb.toString());

    try (Writer writer = new BufferedWriter(new OutputStreamWriter(
            new FileOutputStream("path/to/demo_output.xml"), "UTF-8"))) {
        writer.write(sb.toString());
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос