在 XPath 表达式中使用 OR 运算符

卡尔·希尔

我想在我的 XPath 表达式中使用 OR 条件(不止一次)在遇到特定字符串之前提取我需要的内容,例如“参考”、“更多信息”等。我在下面的表达式当我在 PHP 中使用它时似乎不起作用,但它在 XPath 测试仪上运行。我将不胜感激任何帮助。另外,表达可以压缩吗?

"//p[starts-with(normalize-space(),'Reference')]/preceding-sibling::p | 
//p[starts-with(normalize-space(), 'For more')]/preceding-sibling::p | 
//p[starts-with(normalize-space(),'Something')]/preceding-sibling::p"

下面是一个例子:

<root>
    <main>
        <article>
            <p>
               The stunning increase in homelessness announced in Los Angeles 
               this week — up 16% over last year citywide — was an almost  an 
               incomprehensible conundrum given the nation's booming economy 
               and the hundreds of millions of dollars that city, county and 
               state officials have directed toward the problem.
            </p>
            <p>
                "We cannot let a set of difficult numbers discourage us 
                or weaken our resolve" Garcetti said.
            </p>
            <p>
                For more information: Maeve Reston, CNN
            </p>
        </article>
    </main>
</root>

我正在寻找的结果如下。

<p>
    The stunning increase in homelessness announced in Los Angeles
    this week — up 16% over last year citywide — was an almost  an
    incomprehensible conundrum given the nation's booming economy
    and the hundreds of millions of dollars that city, county and
    state officials have directed toward the problem.
</p>
<p>
    "We cannot let a set of difficult numbers discourage us
    or weaken our resolve" Garcetti said.
</p>
总重量

管道不完全是“或”——它允许您使用多个替代表达式。您可以将其与UNIONSQL 中的进行比较但它适用于 PHP。

$document = new DOMDocument();
$document->loadXML($xml);
$xpath = new DOMXpath($document);

$expression = 
    "//p[starts-with(normalize-space(), 'Reference')]/preceding-sibling::p | 
     //p[starts-with(normalize-space(), 'For more')]/preceding-sibling::p | 
     //p[starts-with(normalize-space(), 'Something')]/preceding-sibling::p";

foreach ($xpath->evaluate($expression) as $node) {
    echo $document->saveXML($node);
}

但是,在 Xpath 条件下允许使用“或”,实际上:

$expression = 
    "//p[
      starts-with(normalize-space(), 'Reference') or 
      starts-with(normalize-space(), 'For more') or 
      starts-with(normalize-space(), 'Something')
    ]/preceding-sibling::p";

foreach ($xpath->evaluate($expression) as $node) {
    echo $document->saveXML($node);
}

演示:https : //3v4l.org/9SMJq

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用'or'运算符和函数创建简单的xpath表达式

来自分类Dev

XPath“或”运算符使用“ pipe”字符?

来自分类Dev

XPath:根路径表达式开头的«/»运算符到底匹配什么?

来自分类Dev

如何在XPath中使用AND运算符?

来自分类Dev

如何在 XPATH 2.0 中使用“<<”运算符?

来自分类Dev

在布尔表达式中使用=>运算符

来自分类Dev

XPath除法运算符

来自分类Dev

在CASE WHEN中使用IN运算符,在GROUP BY表达式中使用SQL

来自分类Dev

如何在正则表达式.Net中使用AND运算符和NOT运算符

来自分类Dev

在Xpath中,可以使用'='运算符链接子xpath查询吗?

来自分类Dev

在linq中使用运算符进行多个groupby显示与使用表达式不同

来自分类Dev

可以在if语句中使用赋值运算符。好像使用了布尔表达式

来自分类Dev

使用OR运算符的Lambda表达式

来自分类Dev

使用OR运算符的Python正则表达式

来自分类Dev

使用或运算符的相似测试表达式?

来自分类Dev

使用 AND NOT 运算符的正则表达式

来自分类Dev

在 xPath 表达式中使用变量

来自分类Dev

在Spring-Integration xpath-expression中使用三元运算符

来自分类Dev

'await'运算符只能在异步lambda表达式错误中使用

来自分类Dev

在Kotlin中使用Elvis运算符时,如何取反布尔表达式?

来自分类Dev

如何在Bash中的复杂条件表达式中使用逻辑非运算符?

来自分类Dev

在C ++ lldb中使用重载运算符评估表达式

来自分类Dev

'await'运算符只能在异步lambda表达式中使用

来自分类Dev

无法在Lambda表达式中使用C#IS运算符?

来自分类Dev

无法在mongodb中的$ in运算符中使用正则表达式

来自分类Dev

在Angular ng-if表达式中使用&(按位AND运算符)

来自分类Dev

在表达式树中使用隐式转换运算符

来自分类Dev

Python在布尔表达式中使用多个运算符

来自分类Dev

C#-无法在Lambda表达式中使用“ is”运算符

Related 相关文章

  1. 1

    使用'or'运算符和函数创建简单的xpath表达式

  2. 2

    XPath“或”运算符使用“ pipe”字符?

  3. 3

    XPath:根路径表达式开头的«/»运算符到底匹配什么?

  4. 4

    如何在XPath中使用AND运算符?

  5. 5

    如何在 XPATH 2.0 中使用“<<”运算符?

  6. 6

    在布尔表达式中使用=>运算符

  7. 7

    XPath除法运算符

  8. 8

    在CASE WHEN中使用IN运算符,在GROUP BY表达式中使用SQL

  9. 9

    如何在正则表达式.Net中使用AND运算符和NOT运算符

  10. 10

    在Xpath中,可以使用'='运算符链接子xpath查询吗?

  11. 11

    在linq中使用运算符进行多个groupby显示与使用表达式不同

  12. 12

    可以在if语句中使用赋值运算符。好像使用了布尔表达式

  13. 13

    使用OR运算符的Lambda表达式

  14. 14

    使用OR运算符的Python正则表达式

  15. 15

    使用或运算符的相似测试表达式?

  16. 16

    使用 AND NOT 运算符的正则表达式

  17. 17

    在 xPath 表达式中使用变量

  18. 18

    在Spring-Integration xpath-expression中使用三元运算符

  19. 19

    'await'运算符只能在异步lambda表达式错误中使用

  20. 20

    在Kotlin中使用Elvis运算符时,如何取反布尔表达式?

  21. 21

    如何在Bash中的复杂条件表达式中使用逻辑非运算符?

  22. 22

    在C ++ lldb中使用重载运算符评估表达式

  23. 23

    'await'运算符只能在异步lambda表达式中使用

  24. 24

    无法在Lambda表达式中使用C#IS运算符?

  25. 25

    无法在mongodb中的$ in运算符中使用正则表达式

  26. 26

    在Angular ng-if表达式中使用&(按位AND运算符)

  27. 27

    在表达式树中使用隐式转换运算符

  28. 28

    Python在布尔表达式中使用多个运算符

  29. 29

    C#-无法在Lambda表达式中使用“ is”运算符

热门标签

归档