我正在尝试自学处理SimpleXMP_read_file命令/对象。
所以我在“simpleXMLElement属性和foreach”中深入研究了这个问题( simpleXMLElement attributes and foreach)。
将它一点一点地复制到我的PHP浏览器中并运行它。
test.xml:
<?xml version="1.0" encoding="utf-8"?>
<response result="0">
<reports>
<get count="2">
<row a="first" b="second" comment="test" c=""/>
<row a="first1" b="second2" comment="test2" c=""/>
</get>
</reports>
</response>
像这样修改了php: PHP:
$xml = simplexml_load_file('test.xml');
$rows = $xml->xpath('reports/get/row');
foreach($rows as $row)
{
foreach($row->attributes() as $key)
{
echo ('test: '.$key['a'] .' '.$key['b'].' '.$key['comment'].' '.$key['c'].'<br>') ;
}
}
我没有错误但只有2行:
test
test
没有数据。
谁能告诉我为什么?
答案 0 :(得分:1)
您正在foreach
而不是$row->attributes()
。因此,循环的每次迭代都是不同的属性。没有任何属性设置$key['a']
值。
您可能想要这样做:
foreach($rows as $row){
$key = $row->attributes();
echo 'test: '.$key['a'] .' '.$key['b'].' '.$key['comment'].' '.$key['c'].'<br>';
}
答案 1 :(得分:0)
做完print_r($rows);
之后我得到了以下内容。现在,您可以通过$row->attributes['a']
等直接访问数组元素和类对象。
foreach($rows as $row){
$xmlObjElement = json_decode(json_encode((array)$row), TRUE);
foreach($xmlObjElement as $fo){
print_r( $fo );
}
}
<强>输出:强>
Array
(
[a] => first1
[b] => second2
[comment] => test2
[c] =>
)
现在您可以访问$fo['a']
等...