我是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_empname() {
$url ='http://.../emp_test.xml';
$xml=simplexml_load_file("$url") or die("Error: Cannot create object");
foreach($xml->children() as $emp_detail) {
$source = $xml->emp_detail->emp->attributes()->emp_name . "<br>";
return $source;
}
}
我可以解析xml。
但是,这是我得到的结果:
john
我对此有疑问:
如何获取所有emp_name属性?
如果emp_name相同,如何分组?
感谢您阅读!
答案 0 :(得分:0)
看起来您的XML正在被正确解析,您唯一的问题是您从循环内返回,导致它只运行一次。对emp_name部分尝试以下操作。这也将只返回unqiue名称。
function create_shortcode_empname()
{
$url ='http://localhost/emp_test.xml';
$xml=simplexml_load_file("$url") or die("Error: Cannot create object");
$names = array();
$emps = $xml->children()->emp_detail->emp ;
foreach($emps as $emp_detail)
{
$source = (string)$emp_detail->attributes()->emp_name;
$names[]= $source;
}
$names = array_unique($names);
return implode("<br />", $names);
}
add_shortcode( 'empname_shortcode', 'create_shortcode_empname' );