java - 正则表达式 - 取消格式化 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>
有没有办法取消格式化并避免上述情况?
解决方案
撒克逊解决方案:
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 对象上设置属性,您可以对输出格式进行大量控制。
推荐阅读
- authentication - Google Analytics Embed API 403 错误请求的身份验证范围不足
- python - 如何在字符串中找到所有可能的连续三元组?
- javascript - 需要正则表达式来比较字符串中的最后一个数字
- php - 基于 Cookie 的身份验证 - 客户端
- github - 使用 github webhooks 配置成功/失败通知
- android - 如何在 Android 上实现应用内购买并处理一些逻辑以增加我的服务器上的积分?
- c - 在 while 循环中使用 scanf() 读取分段错误字符串
- android - 在 Jenkins 上上传 android 构建(.apk 文件)只是为了运行自动化套件而不是构建 android apk
- c++ - 当我对 std::vector 使用自定义排序时,为什么要使用 const 引用?
- python - Google Ads API:创建 IpBlockInfo 实例