php解析xml获取元素相同的属性值

时间:2017-08-02 16:23:51

标签: php xml

我是php的新手。

所以,我想从url解析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>

所以,我试过,但在这里我有问题:

function get_empimg() {
$url = 'https://...emp_test.xml';
$xml = simplexml_load_file("$url") or die("Error: Cannot create object");
foreach($xml->children() as $emp_detail) {
    //do something in here;
    //return img has attribute is John
} 

}

如何通过它来获取所有img属性是John?

感谢您阅读!

2 个答案:

答案 0 :(得分:0)

        $data2 = <<<'XML'
<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;


    $doc2 = new SimpleXMLElement($data2);
    return array_map('strval', $this->doc2->xpath("//*[@emp_name='john']/img"));

答案 1 :(得分:0)

使用Xpath,Xpa​​th表达式允许条件:

10006d7b2276657273696f6e223a7b226e616d65223a22312e3132222c2270726f746f636f6c223a3333357d2c22706c6179657273223a7b226d6178223a3130302c226f6e6c696e65223a357d2c226465736372697074696f6e223a7b2274657874223a225374617264757374227d7d