Memuatkan fail XML dengan simplexml_load_file() dan kemudian menggemakannya dengan print_r($xml) boleh membuatkan anda tertanya-tanya mengapa ia kelihatan kosong:
<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>
Keputusan:
SimpleXMLElement Object ( [Item] => SimpleXMLElement Object ( ) )
Mengapa ini kosong?
Sebabnya ialah print_r() tidak mengeluarkan kandungan elemen dalam nod
Penyelesaian:
Untuk mengakses dan mengeluarkan kandungan elemen tersebut, gunakan kaedah yang direka khusus untuk mengendalikan ruang nama XML, seperti SimpleXMLElement: :children() atau SimpleXMLElement::xpath(). Contohnya:
<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>
Atas ialah kandungan terperinci Mengapa Objek SimpleXML saya Kosong Apabila Menggunakan print_r() pada Fail XML dengan Ruang Nama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!