在大型xml中找到这样的字符串的正确方法是什么:
<ser:serviceItemValues>
<ord1:label>Start Type</ord1:label>
<ord1:value>Loop</ord1:value>
<ord1:valueCd/>
<ord1:activityCd>iactn</ord1:activityCd>
</ser:serviceItemValues>
此xml中的1st会重复上述元素的许多重复,这些重复具有不同的值(Loop等)以及本文档中的其他xml元素。我主要关心的是是否有一个不具有“ Loop”值的serviceItemValues。我试过了,但是似乎不起作用:
private static Pattern LOOP_REGEX =
Pattern.compile("[\\p{Print}]*?<ord1:label>Start Type</ord1:label>[\\p{Print}]+[^(Loop)][\\p{Print}]+</ser:serviceItemValues>[\\p{Print}]*?", Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);
谢谢
最佳答案
查找XPath,有点像XML的正则表达式。有点。
使用XPath,您可以编写从XML文档中提取信息的表达式,因此提取不具有Loop作为子节点的节点正是它的目的。
我没有尝试过,但是作为第一步,我猜想XPath表达式看起来像:
"//ser:serviceItemValues/ord1:value[text()!='Loop']/parent::*"