【问题标题】:JDOM: How to avoid 
 in pretty printed output?JDOM:如何避免 在漂亮的打印输出中?
【发布时间】: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&#xD;
    line 2</el>

上下文

我遇到了这个问题,因为 JTextPane.getText() 有时只返回带有 \n 的文本,有时返回带有 \r\n 的文本。 JTextPane 也有一些非常疯狂的行尾逻辑。见DefaultEditorKit(搜索EndOfLineStringProperty)。

【问题讨论】:

    标签: java xml jtextpane jdom jdom-2


    【解决方案1】:

    cite 的文档非常强调这里的答案是“否”。

    只要在输入字符串中看到“\r”,它就会用“ ”替换它。使用 setLineSeparator 只会更改 "\n" 转换为的内容。

    如果您致电:format.setLineSeparator(LineSeparator.NONE);会发生什么

    【讨论】:

    • 没错,我不敢相信这种行为对任何人都有用,所以我希望我错过了一些东西。使用除 "\r\n" 以外的任何行分隔符都不会在输出中得到 windows 分隔符。
    猜你喜欢
    • 1970-01-01
    • 2013-01-05
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2013-12-20
    相关资源
    最近更新 更多