2011-01-02 11 views
1

Ich versuche, eine XML-Datei zu analysieren, die diese Struktur hat:Parsen einer XML-Datei mit simplexml und den Zugriff auf Eigenschaften

<?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> 

Ich versuche, die Eigenschaften und classname p in der Klasse zuzugreifen. Dies ist der Code, den ich bisher:

$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>"; 
} 

Dies ist die Ausgabe:

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

Der Ausgang I zu bekommen versuchen ist:

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

verschiedene Dinge Versucht für eine Weile und kann das nicht herausfinden. Bitte Hilfe.

Antwort

1

Probieren Sie dies aus:

$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>"; 
} 
+0

Es funktioniert perfekt! Danke für die Hilfe, ich war verrückt geworden, um das herauszufinden. Ich habe versucht, meinen Code nach einem Beispiel zu modellieren, das ich gefunden habe, und wusste nicht wirklich, was ich mit "$ children = $ resXml-> children" ('http://api.uclassify.com/1/ResponseSchema') gemacht habe; " –

+0

haben Sie es geschafft, Daten mit PHP-Bibliothek von UClassify zu analysieren? –