2014-09-20 70 views
1

我有XML文件(「x_path_att.xml」)像只有屬性使用XPath XML在PHP

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <book id="1" name="Book1" genre="Fantasy" /> 
    <book id="2" name="Book2" genre="Novel" /> 
</root> 

我想做的事:顯示其中id = 1我使用的XPath的書的名字。

<?php 
    $xml = simplexml_load_file("x_path_att.xml"); 

    $book_name = $xml->xpath("root/book[@id='1']/@name"); 
    print_r($book_name); 
    echo '<BR />'.$book_name[0].'<BR />'; 
?> 

這是我在屏幕上輸出:

Array () 
Notice: Undefined offset: 0 in D:\EasyPHP... on line 6 

所以很顯然,數組是空的,但我不明白爲什麼。我搜索了互聯網,我認爲一切都應該沒問題。請問哪裏錯了?

謝謝!

回答

0

你必須在你的路徑的開頭缺少斜槓:

$xml = <<<XML 
<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <book id="1" name="Book1" genre="Fantasy" /> 
    <book id="2" name="Book2" genre="Novel" /> 
</root> 
XML; 

$xml = simplexml_load_string($xml); 

$book_name = $xml->xpath("/root/book[@id='1']/@name"); 
print_r($book_name); 

並獲取屬性的值:

echo $book_name[0]->attributes()->name; 

,並提供:

Array 
(
    [0] => SimpleXMLElement Object 
     (
      [@attributes] => Array 
       (
        [name] => Book1 
       ) 

     ) 

) 
Book1 

http://codepad.org/dEwYgehp