Как найти количество выражений xpath с условием в php? - PullRequest
0 голосов
/ 01 мая 2020

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>

Xpath в PHP -

<?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 находится в теге XML "book" и идентификаторе автора или идентификаторе редактора = 123, тогда я хочу найти количество элементов книги. Я пытаюсь это, но не получаю счет и получаю ошибку (синтаксическая проблема). Пожалуйста, помогите.

1 Ответ

0 голосов
/ 01 мая 2020

Если родитель может быть a1 или a2, и оба могут иметь редактора или автора, вы можете получить несколько потомков, используя self::

Чтобы получить количество, вы можете использовать запрос и получите длину .

$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 демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...