【问题标题】:How to find count of xpath expression with a condition in php?如何在php中查找带有条件的xpath表达式的计数?
【发布时间】:2020-05-01 18:37:46
【问题描述】:

HTML -

 <form action="http://192.168.64.2/file.php" method="GET">
    <input type="text" id="venue" name="venue" />

XML -

<a>
<a1>
<author pid = "123"> </author>
<book>Book1</book>
</a1>
<a2>
<editor pid = "123"> </editor>
<book>Book2</book>
</a2>
</a>

PHP 中的 Xpath -

<?php
$venue = $_GET['venue'];
$abc= new DomDocument();
$abc -> load("file.xml");
        $xpath = new DOMXPath($abc);
$xyz = $xpath -> evaluate ("count(//book[.='$venue'] and //author[@pid='123'] | //editor[@pid='123'] [parent::a1 or parent::a2] )");
echo $xyz;
?>

如果在 HTML“书”标签和作者 ID 或编辑器 ID = 123 中找到 HTML 表单中输入的值,那么我想查找书籍元素的计数。我正在尝试这个但没有得到计数并得到一个错误(语法问题)。请帮忙。

【问题讨论】:

    标签: php html xml xpath


    【解决方案1】:

    如果父级可以是 a1 或 a2 并且两者都可以有编辑者或作者,您可以使用 self:: 获得多个后代

    要获取计数,您可以使用query 并获取length

    $venue = $_GET['venue'];
    $abc= new DomDocument();
    $abc->load("file.xml");
    $xpath = new DOMXPath($abc);    
    $expr = "/a/*[self::a1 or self::a2]/*[self::author or self::editor][@pid=\"123\"]/following-sibling::book[normalize-space(text()) = '" . $venue . "']";
    $xyz = $xpath->query($expr);
    echo $xyz->length;
    

    Php demo

    【讨论】:

      猜你喜欢
      • 2020-09-03
      • 2015-03-23
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多