Saya perhatikan bahwa saat menggunakan SimpleXMLElement
pada dokumen yang berisi tag CDATA tersebut, isinya selalu NULL
. Bagaimana cara mengatasinya?
Juga, maaf telah mengirim spam tentang XML di sini. Saya telah mencoba membuat skrip berbasis XML berfungsi selama beberapa jam sekarang ...
<content><![CDATA[Hello, world!]]></content>
Saya mencoba klik pertama di Google jika Anda mencari "SimpleXMLElement cdata", tetapi tidak berhasil.
Jawaban:
Anda mungkin tidak mengaksesnya dengan benar. Anda dapat mengeluarkannya secara langsung atau mentransmisikannya sebagai string. (dalam contoh ini, casting tidak berguna, karena echo secara otomatis melakukannya)
Anda mungkin lebih beruntung dengan
LIBXML_NOCDATA
:sumber
print_r
Anda memang tidak mengaksesnya dengan benar. Tulis kode yang Anda inginkan - mungkin denganecho
, atau dengan(string)
pemeran, dan Anda akan menemukan isinya baik-baik saja. Jangan gunakan LIBXML_NOCDATA itu tidak relevan.<anElement>a text node <aChildElement /> <![CDATA a cdata node]]> another text node</anElement>
. Node CDATA dan teks adalah jenis yang berbeda, dan SimpleXML melacaknya sehingga Anda bisa mendapatkan kembali XML yang Anda masukkan. Saat Anda memasukkan objek SimpleXML ke dalam larik, ia membuang banyak informasi - simpul CDATA, komentar, elemen apa pun tidak di namespace saat ini (misalnya<someNSPrefix:someElement />
), posisi elemen anak dalam teks, dll.LIBXML_NOCDATA
mengubah node CDATA menjadi node teks, tetapi tidak memperbaiki sisanya.Ini
LIBXML_NOCDATA
adalah parametersimplexml_load_file()
fungsi ketiga opsional . Ini mengembalikan objek XML dengan semua data CDATA diubah menjadi string.Perbaiki CDATA di SimpleXML
sumber
Ini melakukan trik untuk saya:
sumber
Ini bekerja sempurna untuk saya.
sumber
Kapan digunakan
LIBXML_NOCDATA
?Saya menambahkan masalah saat mengubah XML ke JSON.
Saat mengakses objek SimpleXMLElement, Ia mendapatkan CDATA:
Saya masuk akal untuk digunakan
LIBXML_NOCDATA
karenajson_encode
tidak mengakses SimpleXMLElement untuk memicu fitur pengecoran string, saya menebak yang__toString()
setara.sumber