java - JDOM:如何避免漂亮的打印输出?
问题描述
如何避免
在我的 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
)。
解决方案
您引用的文档非常强调这里的答案是“否”。
每当它在输入字符串中看到“\r”时,它将用“ ”替换它。使用 setLineSeparator 只会更改 "\n" 转换为的内容。
如果你打电话会发生什么:format.setLineSeparator(LineSeparator.NONE);
推荐阅读
- algorithm - 可以仅从中序遍历构造二叉搜索树吗?
- bash - 从 bash 脚本运行 docker
- python - Seaborn:在种类='count'的catplot的条形标签中将Bool替换为是/否
- typescript - 如何访问索引器下方嵌套类型中的属性类型?
- configuration - MSYS2 的 GMP 配置仍然不完整
- visual-studio - 项目属性上的 Visual Studio Xamarin 签名选项卡错误,并且 Debug 被命名为项目名称而不是设备列表
- firebase - 一次将多个文档添加到 Firestore 时的 UI 堆栈
- fortran - 如何更改我的代码以生成原子层的矩形形状以及如何添加其他层?
- selenium - 使用 Selenium 打开 Real Chrome 并运行脚本
- c# - 一个大的 .NET 类库与多个较小的类库——权衡是什么?