【发布时间】:2020-11-12 00:27:07
【问题描述】:
如何在我的 XML 输出中避免 
?
JDOM 在方法 Format.setLineSeparator 的 javadoc 中谈到了这一点。
为了这个问题,请假设我只得到一个必须序列化的 XML 文档。 XML 元素文本可能包含来自数据库、UI 组件、浏览器、程序等的\r、\n 和\r\n 的任意组合。
是否可以将 JDOM 配置为仅写入 \r\n,而从不写入 
?
这是 JDOM 的特性还是其他 XML 库的行为相同?将不得不检查...
到目前为止,我唯一的想法是迭代整个文档并删除任何元素的任何文本属性中出现的 \r。如果这确实是我唯一的选择,我也会对正确且可读的方式感兴趣。
我的另一个想法是清理输出:xml.replace("
", "")
示例
public static void main(String[] args) throws Exception
{
JTextPane pane = new JTextPane();
pane.setText("line 1\r\nline 2");
// pane.setText("line 1\nline 2");
Element element = new Element("el");
element.setText(pane.getText());
Format format = Format.getPrettyFormat();
format.setLineSeparator("\r\n");
StringWriter writer = new StringWriter();
new XMLOutputter(format).output(new Document(element), writer);
System.out.println(writer.toString());
}
输出
<?xml version="1.0" encoding="UTF-8"?>
<el>line 1
line 2</el>
上下文
我遇到了这个问题,因为 JTextPane.getText() 有时只返回带有 \n 的文本,有时返回带有 \r\n 的文本。 JTextPane 也有一些非常疯狂的行尾逻辑。见DefaultEditorKit(搜索EndOfLineStringProperty)。
【问题讨论】:
标签: java xml jtextpane jdom jdom-2