Java Regex - 从xml中排除空标记

时间:2010-09-24 15:59:28

标签: java regex

假设我有两个xml字符串:

String logToSearch =“< abc>< number> 123456789012< / number>< / abc>”

String logToSearch2 =“< abc>< number xsi:type = \”soapenc:string \“/>< / abc>”

字符串logToSearch3 =“< abc>< number />< / abc>”;

如果标签包含值,我需要一个找到数字标签的模式,即只能在logToSearch中找到匹配。

我不是说我正在寻找数字本身,而是matcher.find方法应该仅对第一个字符串返回true。

现在我有这个: 模式模式= Pattern.compile(“<(”+ pattrenString +“)。*?>”,       Pattern.CASE_INSENSITIVE); 其中patternString只是“数字”。我尝试添加“<(”+ pattrenString +“)[^ />]。*?>但它不起作用,因为在[^ />]中,每个字符都是单独处理的。

由于

2 个答案:

答案 0 :(得分:1)

这绝对是解析XML的错误方法。事实上,如果您需要的不仅仅是这里给出的基本示例,那么使用正则表达式就无法解决更复杂的案例。

使用简单的XML解析器,例如XOM。现在,使用xpath,查询元素并过滤那些没有数据的元素。我只能想象这个问题是未来头痛的先兆,除非你现在修改你的方法。

答案 1 :(得分:0)

因此搜索"<number[^/>]*>"会找到开始标记。如果您想确保它不为空,请尝试"<number[^/>]*>[^<]""<number[^/>]*>[0-9]"