Я пытаюсь научить себя обрабатывать команду/объект SimpleXMP_read_file.
Поэтому я глубоко рассмотрел проблему в атрибутах simpleXMLElement и foreach (атрибуты simpleXMLElement и 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
Нет данных.
Может ли кто-нибудь сказать мне, почему?
Вы делаете foreach
над $row->attributes()
. Поэтому каждая итерация цикла является другим атрибутом. Ни один из атрибутов не имеет значения $key['a']
.
Вы, вероятно, захотите сделать:
foreach($rows as $row){
$key = $row->attributes();
echo 'test: '.$key['a'] .' '.$key['b'].' '.$key['comment'].' '.$key['c'].'<br>';
}
после выполнения 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']
т.д....
json_decode(json_encode())
?