Разбор xml-файла с использованием simplexml и доступ к свойствам

Я пытаюсь разобрать XML-файл, который имеет такую ​​структуру:

<?xml version="1.0" encoding="UTF-8" ?> 
- <uclassify xmlns="http://api.uclassify.com/1/ResponseSchema" version="1.00">
  <status success="true" statusCode="2000" /> 
- <readCalls>
- <classify id="cls1">
- <classification>
  <class className="Arts" p="0.920034" /> 
  <class className="Business" p="2.81823e-005" /> 
  <class className="Computers" p="0.0040341" /> 
  <class className="Games" p="0.00846496" /> 
  <class className="Health" p="0.00203198" /> 
  <class className="Home" p="0.00136572" /> 
  <class className="Recreation" p="0.000526926" /> 
  <class className="Science" p="0.000160703" /> 
  <class className="Society" p="0.0611354" /> 
  <class className="Sports" p="0.00221835" /> 
  </classification>
  </classify>
  </readCalls>
  </uclassify>

Я пытаюсь получить доступ к свойствам className и p в классе. Это код, который у меня есть на данный момент:

$resXml = simplexml_load_file($requestUrl); //$requestUrl is where the xml file is located
$children = $resXml->children('http://api.uclassify.com/1/ResponseSchema');

foreach ($children->readCalls->classify->classification->class as $d) {
    $currClassificationName = $d['className'];
    $currClassificationRating = (float) $d['p'];
    echo "$currClassificationName: $currClassificationRating" . "</br>";
}

Это результат:

: 0
: 0
: 0
: 0
: 0
: 0
: 0
: 0
: 0

Результат, который я пытаюсь получить:

Arts: 0.920034
Business: 2.81823e-005 
  ... 
Society: 0.0611354
Sports: 0.00221835

Некоторое время пробовал разные вещи и не мог понять этого. Пожалуйста помоги.


person Bilal Shahid    schedule 02.01.2011    source источник


Ответы (1)


Попробуйте это:

$resXml = simplexml_load_file($requestUrl); //$requestUrl is where the xml file is located

foreach ($resXml->readCalls->classify->classification->class as $d) {
    $currClassificationName = $d['className'];
    $currClassificationRating = (float) $d['p'];
    echo "$currClassificationName: $currClassificationRating" . "</br>";
}
person seanh    schedule 02.01.2011
comment
Работает отлично! Спасибо за помощь, я сходил с ума, пытаясь понять это. Я пытался смоделировать свой код по примеру, который я нашел, и толком не знал, что делаю с $ children = $ resXml- ›children ('api.uclassify.com/1/ResponseSchema'); - person Bilal Shahid; 02.01.2011
comment
удалось ли вам проанализировать данные с помощью библиотеки php от uclassify? - person Mpampinos Holmens; 11.08.2012