How to disable escaping using XMLOutputter

java, jdom, xml

Solution

You should be able to prevent escaping by:

Extending `XMLOutputer` and overriding `escapeElementEntities` method

XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat()) {
        @Override
        public String escapeElementEntities(String str) {
            return str;
        }
    };
Writer writer = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
outputter.output(doc, writer);
writer.close();

I found this here

- Setting custom `EscapeStrategy` on the `Format` to prevent escaping certain characters

Either way you should be careful to produce a valid XML.

Hope this helps.

Problem

I use XMLOutputter to write xml file to use it then in android. When the file is written, string ``` <string name="sname"><u>Text</u></string> ``` is written as ``` <string name="sname">&lt;u&gt;Text&lt;u&gt;</string> ``` I read "<u>Text<u>" from database and then put it into jdom Document. Then I write the document using ``` XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat()); Writer writer = new OutputStreamWriter(new FileOutputStream(file), "utf-8"); outputter.output(doc, writer); writer.close(); ``` How can I prevent escaping and put the exact string from database to file? (I want to have '<', not `&lt;` there)

Original source