php xml get元素使用属性值

时间:2017-08-03 03:43:15

标签: php xml wordpress

我是php的新手。

我想从url解析emp_test.xml,如:

<?xml version="1.0" encoding="utf-8"?>
<all_emp>
<emp_detail>
    <emp emp_name="john"><img>john_1.jpg</img></emp>
    <emp emp_name="john"><img>john_2.jpg</img></emp>
    <emp emp_name="john"><img>john_3.jpg</img></emp>
    <emp emp_name="marry"><img>marry_1.jpg</img></emp>
    <emp emp_name="marry"><img>marry_2.jpg</img></emp>
    <emp emp_name="david"><img>david_1.jpg</img></emp>
</emp_detail>
</all_emp>

要获得所有img的属性是john:

$url = 'https://.../emp_test.xml';
$xml = simplexml_load_file("$url") or die("Error: Cannot create object");
foreach ($xml->xpath("//*[@emp_name='john']/img") as $node)
{
    $img = (string) $node;
    return $img;
}

我可以解析xml。

但是,这是结果:

john_1.jpg

如何获取所有img的属性是john之类的?

john_1.jpg
john_2.jpg
john_3.jpg

感谢您的阅读。

1 个答案:

答案 0 :(得分:0)

你可以这样使用。

            <?php
    $url = '<?xml version="1.0" encoding="utf-8"?>
    <all_emp>
    <emp_detail>
        <emp emp_name="john"><img>john_1.jpg</img></emp>
        <emp emp_name="john"><img>john_2.jpg</img></emp>
        <emp emp_name="john"><img>john_3.jpg</img></emp>
        <emp emp_name="marry"><img>marry_1.jpg</img></emp>
        <emp emp_name="marry"><img>marry_2.jpg</img></emp>
        <emp emp_name="david"><img>david_1.jpg</img></emp>
    </emp_detail>
    </all_emp>';

    $xml = simplexml_load_string($url) or die("Error: Cannot create object");
    $imgstring ='';
    foreach ($xml->emp_detail->emp as $node)
    {     
        if (strpos((string) $node->img, 'john') !== false) {
          $imgstring .= (string) $node->img.",";
        }


    }

    print_r($imgstring);
?>