Вы можете использовать
/articles/article/*[name()="title" or name()="short"]
, который будет возвращать только дочерние элементы любых "article / article" с именем элемента "title" или "short".
В качестве альтернативы, измените XPath на /articles/article/*
, чтобы получить все дочерние узлы статьи, и при итерации $results
проверьте, является ли DOMNode::nodeName
"заголовком" или "коротким", например,
$queryResult = $xpathvar->query('/articles/article/*'); // grab all children
foreach($queryResult as $result){
if($result->nodeName === 'title' || $result->nodeName === 'short') {
echo $result->textContent;
}
}
Если вы не хотите менять XPath, вам нужно повторить childNodes
статьи, например,
$queryResult = $xpathvar->query('/articles/article');
foreach($queryResult as $result) {
foreach($result->childNodes as $child) {
if($child->nodeName === 'title' || $child->nodeName === 'short') {
echo $child->textContent;
}
}