在大型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::*"

10-08 18:24