Mantenga caracteres de entidad de caracteres numéricos como `& # 10; & # 13; `al analizar XML en Java

Estoy analizando XML que contiene caracteres de entidad de caracteres numéricos como (pero no limitado a)&#10; &#13; &lt; &gt; (retorno de carro de avance de línea <>) en Java. Al analizar, agrego contenido de texto de nodos a un StringBuffer para luego escribirlo en un archivo de texto.

Sin embargo, estos caracteres Unicode se resuelven o transforman en nuevas líneas / espacios en blanco cuando escribo la Cadena en un archivo o la imprimo.

¿Cómo puedo mantener los símbolos de caracteres de entidad de caracteres numéricos originales al iterar sobre nodos de un archivo XML en Java y almacenar los nodos de contenido de texto en una Cadena?

Ejemplo de archivo xml de demostración:

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

Ejemplo de código Java. Carga el XML, itera sobre los nodos y recopila el contenido de texto de cada nodo en un StringBuffer. Una vez finalizada la iteración, escribe StringBuffer en la consola y también en un archivo (pero no&#10; &#13;) símbolos.

¿Cuál sería una manera de mantener estos símbolos al almacenarlos en una cadena? ¿Me podría ayudar? Gracias.

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());
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta