Как выбрать два разных элемента с помощью запроса XPath

Я выбираю <a id="categoryBrandIcon"> с:

$item = $xpath->query("//a[@id='categoryBrandIcon']")->item(0);

Как мне изменить код для выбора <a id="categoryBrandIcon"> и все <input type="hidden"> теги?

Выбор входов, если input[@type='hidden'] но я не знаю, как связать этих двоих.

С помощью селекторов CSS я бы сделал это a#categoryBrandIcon, input[type="hidden"]

1

Решение

Да, вы можете объединить их в один запрос xpath через канал. Пример:

$sample_markup = '
<div class="container">
<a id="categoryBrandIcon" href="#">Test</a>
<input type="hidden" />
<input type="text" />
<h1>Test</h1>
</div>
';

$dom = new DOMDocument();
$dom->loadHTML($sample_markup);
$xpath = new DOMXPath($dom);

$elements = $xpath->query("//a[@id='categoryBrandIcon'] | //input[@type='hidden']");
foreach($elements as $e) {
// loop thru found elements
}
2

Другие решения

Вы можете объединить два запроса xpath с вертикальной чертой, поэтому просто объедините два запроса:

//a[@id='categoryBrandIcon'] | //input[@type='hidden']
0