Heim >Backend-Entwicklung >PHP-Tutorial >Warum ist mein SimpleXML-Objekt leer, wenn print_r() für eine XML-Datei mit Namespaces verwendet wird?
Laden einer XML-Datei mit simplexml_load_file() und anschließendes Echo mit print_r($xml) kann dazu führen, dass Sie sich fragen, warum es leer erscheint:
<code class="xml"><ArrayOfItem> <Item> <attributes> <Attribute> <dataType>string</dataType> </Attribute> </attributes> </Item> </ArrayOfItem></code>
<code class="php">$xml = simplexml_load_file('myfile.xml'); print_r($xml);</code>
Ergebnis:
SimpleXMLElement Object ( [Item] => SimpleXMLElement Object ( ) )
Warum ist es leer?
Der Grund dafür ist, dass print_r() den Inhalt der Elemente im Knoten
Lösung:
Um auf den Inhalt dieser Elemente zuzugreifen und ihn auszugeben, verwenden Sie Methoden, die speziell für die Verarbeitung von XML-Namespaces entwickelt wurden, wie z. B. SimpleXMLElement: :children() oder SimpleXMLElement::xpath(). Zum Beispiel:
<code class="php">// Get children with namespace 'q1' $children = $xml->Item->children('q1', true); // Loop through and output child nodes foreach ($children as $child) { echo 'Child node: ' . $child->getName() . ' value: ' . $child->dataType . "\n"; }</code>
Das obige ist der detaillierte Inhalt vonWarum ist mein SimpleXML-Objekt leer, wenn print_r() für eine XML-Datei mit Namespaces verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!