如何使用 XMLOutputter 禁用转义

Ser*_*kii 6 java xml jdom

我使用 XMLOutputter 编写 xml 文件,然后在 android 中使用它。当文件被写入时,字符串

<string name="sname"><u>Text</u></string>
Run Code Online (Sandbox Code Playgroud)

写成

<string name="sname">&lt;u&gt;Text&lt;u&gt;</string>
Run Code Online (Sandbox Code Playgroud)

我从数据库读取“<u>Text<u>”,然后将其放入jdom文档中。然后我使用编写文档

XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
Writer writer = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
outputter.output(doc, writer);
writer.close();
Run Code Online (Sandbox Code Playgroud)

如何防止转义并将准确的字符串从数据库放入文件?(我想要有“<”,而不是&lt;那里)

MJa*_*Jar 5

您应该能够通过以下方式防止逃逸:

  • 扩展XMLOutputer和重写escapeElementEntities方法

    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();
    
    Run Code Online (Sandbox Code Playgroud)

在这里找到了这个

  • 设置自定义EscapeStrategyFormat防止转义某些字符

无论哪种方式,您都应该小心地生成有效的 XML。

希望这可以帮助。

  • 谢谢,姆贾尔。有用。我用 jdom2 尝试了这个,但没有成功,因为 jdom2 中的 XMLOutputter 是最终的。我下载了第一个版本,现在可以使用了。 (2认同)