19 Stimmen

Wie erhält man den Wert eines Attributs aus einer XML-Datei in PHP?

Tut mir leid, wenn dies wie eine einfache Frage erscheint, aber ich habe angefangen, mir die Haare auszureißen...

Ich habe eine XML-Datei, die wie folgt aussieht...

<VAR VarNum="90">
  <option>1</option>
</VAR>

Ich versuche, die VarNum .

Bislang konnte ich mit dem folgenden Code die anderen Informationen abrufen:

$xml=simplexml_load_file($file);
$option=$xml->option;

Ich kann VarNum (den Wert des Attributs, glaube ich) einfach nicht abrufen.

Danke!

25voto

zombat Punkte 89911

Sie sollten in der Lage sein, dies zu erhalten, indem Sie SimpleXMLElement::Attribute()

Versuchen Sie dies:

$xml=simplexml_load_file($file);
foreach($xml->Var[0]->attributes() as $a => $b) {
    echo $a,'="',$b,"\"\n";
}

Das zeigt Ihnen alle Name/Wert-Attribute für die erste foo Element. Da es sich um ein assoziatives Array handelt, können Sie auch dies tun:

$attr = $xml->Var[0]->attributes();
echo $attr['VarNum'];

14voto

Pascal MARTIN Punkte 384469

Wie wäre es mit der Verwendung von $xml['VarNum'] ?

Zum Beispiel so:

$str = <<<XML
<VAR VarNum="90">
  <option>1</option>
</VAR>
XML;

$xml=simplexml_load_string($str);
$option=$xml->option;

var_dump((string)$xml['VarNum']);

(Ich habe die simplexml_load_string weil ich Ihr XML in einen String eingefügt habe, anstatt eine Datei zu erstellen; was Sie mit simplexml_load_file ist in Ihrem Fall in Ordnung!)

Sie bekommen

string '90' (length=2)

Mit simpleXML greifen Sie auf Attribute mit einer Array-Syntax zu.
Und Sie müssen auf einen String casten, um den Wert zu erhalten, und nicht auf eine Instanz von SimpleXMLElement

Zum Beispiel, siehe Beispiel #5 von Grundlegende Verwendung im Handbuch :-)

3voto

sunnykachwala Punkte 31
[0] => Array
                (
                    [@attributes] => Array
                        (
                            [uri] => https://abcd.com:1234/abc/cst/2/
                        [id] => 2
                    )

                [name] => Array
                    (
                        [first] => abcd
                        [last] => efg
                    )

                [company] => abc SOLUTION
                [email] => abc@xyz.com
                [homepage] => WWW.abcxyz.COM
                [phone_numbers] => Array
                    (
                        [phone_number] => Array
                            (
                                [0] => Array
                                    (
                                        [main] => true
                                        [type] => work
                                        [list_order] => 1
                                        [number] => +919876543210
                                    )

                                [1] => Array
                                    (
                                        [main] => false
                                        [type] => mobile
                                        [list_order] => 2
                                        [number] => +919876543210
                                    )

                            )

                    )

                [photo] => Array
                    (
                        [@attributes] => Array
                            (
                                [uri] => https://abcd.com:1234/abc/cst/2/cust_photo/
                            )

                    )

            )

Ich habe den folgenden Code angewendet

$xml = simplexml_load_string($response);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
print_r($array);

aber es ist nicht voll nutzen ich will alle Daten in einem einzigen Array in PHP

0voto

Mahbub Alam Punkte 338

Versuchen Sie dies

$xml->attributes()['YourPropertyName']; //check property case also

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X