Neden DOMXPath çalışmıyor?

2 Cevap php

I DOMXPath kullanarak bir XML belgesini ayrıştırmak için bir PHP komut dosyası yazmak çalışıyorum; Ancak benim XPath sorguları hiçbiri bir şey dönüyor, çünkü ben bir şey eksik görünüyor. Yani bir çok ilkel bir XML belgesini ayrıştırmak denemek ve benim komut aşağı su denedim, ve o da çalışmıyor. I this XPath example kapalı bu komut tabanlı ettik.

<?php

$xml  = '<?xml version="1.0" encoding="ISO-8859-1"?>';
$xml .= '<bookstore>';
$xml .= '<book category="COOKING">';
$xml .= '<title lang="en">Everyday Italian</title>';
$xml .= '<author>Giada De Laurentiis</author>';
$xml .= '<year>2005</year>';
$xml .= '<price>30.00</price>';
$xml .= '</book>';
$xml .= '</bookstore>';

$dom = new DOMDocument('1.0');
$dom->loadXML($xml);

$xpath = new DOMXPath($dom);
$result = $xpath->query('/bookstore/book[1]/title');
var_dump($result);

?>

Problem $ sonuç benim var_dump always gibi bir şey verir ki:

object(DOMNodeList)#4 (0) { }

... Hiçbir şey bulduğunu belirten.

2 Cevap

In this case the output of var_dump() is misleading. Try

fveyaeach($result as $e) {
  echo $e->nodeValue;
}

veya

echo $result->length;

yerine.

örneğin kodunuzu kullanarak ($ ​​result = $ xpath kadar ....) +

echo phpversion(), "\n";
var_dump($result);
echo $result->length, "\n";
fveyaeach($result as $e) {
  echo $e->nodeValue;
}

çıktıdır

5.3.1
object(DOMNodeList)#4 (0) {
}
1
Everyday Italian

Ben kök düğüm = "http://www.w3.org/2005/Atom" xmlns belirten bir doc ile mücadele ettik. Onu dışarı aldı ve xpath işleri.