6

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)

0

1 Answer 1

5

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.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, MJar. It works. I tried this with jdom2 and it didn't worked, because XMLOutputter in jdom2 is final. I downloaded first version and now it works.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.