我有很多需要从字符串中删除的空xml标记。
String dealData = dealDataWriter.toString();
someData = someData.replaceAll("<somerandomField1/>", "");
someData = someData.replaceAll("<somerandomField2/>", "");
someData = someData.replaceAll("<somerandomField3/>", "");
someData = someData.replaceAll("<somerandomField4/>", "");
这使用了大量不高效的字符串操作,可以更好地避免这些操作。
答案 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上运行代码