В дополнение к уже указанному решению вы также можете использовать:
foreach ($xpath->query(sprintf('/projecten/project[@id="%d"]', $id)) as $projectNode) {
echo
$projectNode->getElementsByTagName('titel')->item(0)->nodeValue,
$projectNode->getElementsByTagName('siteurl')->item(0)->nodeValue,
$projectNode->getElementsByTagName('screenshot')->item(0)->nodeValue,
$projectNode->getElementsByTagName('omschrijving')->item(0)->nodeValue;
}
или извлеките значения узла DOMText напрямую с помощью Xpath
foreach ($xpath->query(sprintf('/projecten/project[@id="%d"]', $id)) as $projectNode) {
echo
$xpath->evaluate('string(titel)', $projectNode),
$xpath->evaluate('string(siteurl)', $projectNode),
$xpath->evaluate('string(screenshot)', $projectNode),
$xpath->evaluate('string(omschrijving)', $projectNode);
}
или импортируйте узел в SimpleXml
foreach ($xpath->query(sprintf('/projecten/project[@id="%d"]', $id)) as $projectNode) {
$detail = simplexml_import_dom($projectNode);
echo
$detail->titel,
$detail->siteurl,
$detail->screenshot,
$detail->omschrijving;
}
или даже объединить все значения непосредственно в XPath:
$xpath = new DOMXPath($dom);
echo $xpath->evaluate(
sprintf(
'concat(
/projecten/project[@id = %1$d]/titel,
/projecten/project[@id = %1$d]/siteurl,
/projecten/project[@id = %1$d]/screenshot,
/projecten/project[@id = %1$d]/omschrijving
', $id
)
);