【问题标题】:Remove space between the beginning and the end of xml tag删除 xml 标记的开头和结尾之间的空格
【发布时间】:2015-06-12 08:00:17
【问题描述】:

我需要一个正则表达式来删除 xml 标记的开头和结尾之间的空格。 例如: 有人创建 xml 并将其发送给我,因此我可以验证、签名并发送到 Web 服务。

为此,我需要删除标签开头和结尾之间的空格: String xmlString = "<?xml version="1.0" encoding="UTF-8"?><car><name>Beatle </name>" + "<doors>2</doors><drivers><driver><name> Guilherme</name></driver>" + "<driver><name>Leonardo </name></driver></drivers></car>";
xmlString = xmlString.replaceAll("> ", ">"); xmlString = xmlString.replaceAll(" <", "<");

有没有办法用正则表达式将这两个替换合二为一?

【问题讨论】:

  • 我很确定你不能用正则表达式安全地做到这一点。特别是,任何 CDATA 块都可能会破坏。您最好使用解析器,尤其是因为您可能想验证文档。
  • @chrylis 你能给我一个在这种情况下使用的例子吗?

标签: java regex xml string


【解决方案1】:

你可以使用这个正则表达式:

(<[^/][^>]*>) +| +(<\/[^>]+>)

(在Java中,这应该像String pattern = "(&lt;[^/][^&gt;]*&gt;) +| +(&lt;\\/[^&gt;]+&gt;)";一样使用)

并应用以下替换字符串:

$1$2

勾选替换全局

测试:

<?xml version="1.0" encoding="UTF-8"?><car><name>Beatle </name> <doors>2</doors><drivers><driver><name> Guilherme</name></driver> <driver><name>Leonardo </name></driver></drivers></car>

输出:

<?xml version="1.0" encoding="UTF-8"?><car><name>Beatle</name> <doors>2</doors><drivers><driver><name>Guilherme</name></driver> <driver><name>Leonardo</name></driver></drivers></car>

【讨论】:

    【解决方案2】:
    (>) | (<)
    

    您可以使用 | or 运算符并替换为 $1$2.Done in 1 regex。

    【讨论】:

    • 我在link 使用此模式进行了测试。如果我通过 $1,当结束标记之前只有空格时,例如 sadas 它会更改为 sadas/tag>
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多