2014-09-20 74 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