Java JDOM:如何避免&#除息的;在漂亮的打印输出?
如何避免Java JDOM:如何避免&#除息的;在漂亮的打印输出?,java,xml,jtextpane,jdom,jdom-2,Java,Xml,Jtextpane,Jdom,Jdom 2,如何避免 在我的XML输出中 JDOM在方法的javadoc中谈到了这一点 对于这个问题,请假设我只得到一个必须序列化的XML文档。XML元素文本可能包含来自数据库、UI组件、浏览器、程序等的\r、\n和\r\n的任意组合 是否可以将JDOM配置为只写\r\n,而不写&xD 这是JDOM的一个特长还是其他XML库的行为都一样?我必须检查一下 到目前为止,我唯一的想法是迭代整个文档,并删除任何元素的任何文本属性中出现的\r。如果这确实是我唯一的选择,我也会对这样做的正确和可读的方式感兴趣 我
代码>在我的XML输出中
JDOM在方法的javadoc中谈到了这一点
对于这个问题,请假设我只得到一个必须序列化的XML文档。XML元素文本可能包含来自数据库、UI组件、浏览器、程序等的\r
、\n
和\r\n
的任意组合
是否可以将JDOM配置为只写\r\n
,而不写&xD代码>
这是JDOM的一个特长还是其他XML库的行为都一样?我必须检查一下
到目前为止,我唯一的想法是迭代整个文档,并删除任何元素的任何文本属性中出现的\r
。如果这确实是我唯一的选择,我也会对这样做的正确和可读的方式感兴趣
我的另一个想法是清理输出:xml.replace(
;“,”)
例子
输出
第1行和第xD行;
第2行
上下文
我遇到这种情况是因为JTextPane.getText()有时返回的文本只有\n
,有时返回的文本是\r\n
。JTextPane也有一些非常疯狂的线端逻辑。请参阅(搜索EndOfLineStringProperty
)。您非常强调的是,这里的答案是“否”
只要在输入字符串中看到“\r”,它就会用“
;”替换它。使用setLineSeparator只会更改“\n”转换为的内容
如果调用:format.setLineSeparator(LineSeparator.NONE),会发生什么情况代码>没错,我不相信这种行为对任何人都有用,所以我希望我错过了一些东西。使用“\r\n”以外的任何行分隔符都不会在输出中获得windows分隔符。
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>