2012-09-07 91 views
0

XML:使用具有的SimpleXMLElement返回空白結果的XPath?

<A> 
    <B type="source"> 
    <C> 
     <D> 
     <E ref="description">my_desc</E> 
     <E>Some other E</E> 
     </D> 
    </C> 
    </B> 
</A> 

PHP:

$doc = new SimpleXMLElement('URL.xml', null, true); 
$path = $doc->xpath('A/B[@type="source"]/C/D/E[@ref="description"]'); 
var_dump ($path); 

返回:

Array 
(
) 

最後,我想獲得的<E>ref="description"的內在價值。我究竟做錯了什麼?以下從指南:http://php.net/simplexmlelement.xpath

+0

你在查詢結束試試這個有/文()? – noko

+0

如在'$ doc->的xpath( 'A/B [@類型= 「源」]/C/d/E [@ REF = 「描述」] /文本()');'或'$ doc->的xpath( 'A/B [@類型= 「源」]/C/d/E [@ REF = 「說明」') - >文本();'?既不產生不同的結果。 – Jared

+0

在查詢開始處添加//。 // A/B [@類型= 「源」]/C/d/E [@ REF = 「說明」]作品 – noko

回答

0

使用你提供的XML,下面的代碼將打印出E的字符串值:

$doc = new SimpleXMLElement('URL.xml', null, true); 
$path = $doc->xpath('/A/B[@type="source"]/C/D/E[@ref="description"]'); 
echo $path[0]; 

你需要用一個開始查詢關/指定文檔根目錄。

你也可以查詢// E [@ REF = 「說明」]找到你想要的所有的E元素。