如何使用正则表达式替换xml空标记

时间:2018-01-10 11:17:05

标签: java regex xml

我有很多需要从字符串中删除的空xml标记。

 String dealData = dealDataWriter.toString();
 someData = someData.replaceAll("<somerandomField1/>", "");
 someData = someData.replaceAll("<somerandomField2/>", "");
 someData = someData.replaceAll("<somerandomField3/>", "");
 someData = someData.replaceAll("<somerandomField4/>", "");

这使用了大量不高效的字符串操作,可以更好地避免这些操作。

4 个答案:

答案 0 :(得分:1)

我建议不要在使用HTML / XML时使用正则表达式...但对于像你这样的简单案例,也许可以使用像这样的规则:

someData.replaceAll("<\\w+?\\/>", "");

测试:link

如果您还想考虑标签名称前后的可选空格:

someData.replaceAll("<\\s*\\w+?\\s*\\/>", "");

测试:link

答案 1 :(得分:0)

尝试以下代码,您可以删除其中没有任何空格的所有标记。

  

someData.replaceAll( “&LT; \ W + /&gt;” 中 “”);

答案 2 :(得分:0)

除了使用正则表达式或字符串匹配之外,您还可以使用xml解析器查找空标记并将其删除。

请参阅此处给出的答案:Java Remove empty XML tags

答案 3 :(得分:0)

如果您同时要删除<tagA></tagA><tagB/>,则可以使用以下正则表达式。请注意,\ 1用于备份参考匹配组。

// identifies empty tag i.e <tag1></tag> or <tag/>
// it also supports the possibilities of white spaces around or within the tag. however tags with whitespace as value will not match.
private static final String EMPTY_VALUED_TAG_REGEX = "\\s*<\\s*(\\w+)\\s*></\\s*\\1\\s*>|\\s*<\\s*\\w+\\s*/\\s*>";

ideone上运行代码