Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Objek SimpleXML saya Kosong Apabila Menggunakan print_r() pada Fail XML dengan Ruang Nama?

Mengapa Objek SimpleXML saya Kosong Apabila Menggunakan print_r() pada Fail XML dengan Ruang Nama?

DDD
DDDasal
2024-10-27 06:27:29870semak imbas

Why is my SimpleXML Object Empty When Using print_r() on an XML File with Namespaces?

SimpleXML dan print_r() - Mengapa ini kosong?

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 kerana ia berada dalam ruang nama XML yang berbeza.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn