首页 > 解决方案 > 正则表达式 - 取消格式化 XML

问题描述

我正在尝试将 XML 格式化为单行。(使用 JAVA)

我尝试使用以下正则表达式来替换。

input.replaceAll(">\\s+", ">").replaceAll("\\s+<", "<");

但是,它也会删除元素前后的空间。这是出乎意料的。

例如:

情景 01

前:<AAA>{space}{space}{space}</AAA>

后:<AAA></AAA>

情景 02

前:<AAA>{space}{space}123{space}{space}</AAA>

后:<AAA>123</AAA>

情景 03

前:<AAA>{space}A{space}B{space}C{space}</AAA>

后:<AAA>A{space}B{space}C</AAA>

有没有办法取消格式化并避免上述情况?

标签: javaregexxmlindentation

解决方案


撒克逊解决方案:

Processor p = new Processor(false);
DocumentBuilder db = p.newDocumentBuilder();
db.setWhitespaceStrippingPolicy(WhitespaceStrippingPolicy.ALL);
XdmNode doc = db.build(new File(...));
Serializer s = p.newSerializer(new File(...));
s.serialize(doc.asSource());

通过在 Serializer 对象上设置属性,您可以对输出格式进行大量控制。


推荐阅读