Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menyoal Elemen XML dengan Ruang Nama dengan Berkesan menggunakan XDocument?
Menavigasi XML dengan Ruang Nama dalam XDocument
Apabila bekerja dengan XML yang mengandungi ruang nama, adalah penting untuk mempertimbangkan kesannya terhadap pertanyaan elemen dalam XDocument. Secara lalai, elemen XDocument disoal tanpa mengambil kira ruang nama. Ini boleh membawa kepada hasil yang tidak dijangka, seperti yang ditunjukkan dalam contoh XML yang disediakan:
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent"> <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system"> <EventID>589828</EventID> <Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" /> </System> </E2ETraceEvent>
Dalam senario ini, kod berikut mengembalikan null untuk xEl1 kerana kewujudan ruang nama:
XDocument xDoc = XDocument.Parse(CurrentString); XElement xEl1 = xDoc.Element("E2ETraceEvent");
Menyelesaikan Isu dengan Ruang Nama
Untuk menavigasi dengan betul XML dengan ruang nama, gunakan kelas XNamespace. XNamespace menyediakan cara untuk menentukan ruang nama dan menggabungkannya dengan nama elemen semasa membuat pertanyaan. Berikut ialah kod yang disemak:
XNamespace nsSys = "http://schemas.microsoft.com/2004/06/windows/eventlog/system"; XElement xEl2 = xDoc.Element(nsSys + "System");
Kini, xEl2 akan mengandungi elemen Sistem dengan ruang nama yang ditentukan. Anda boleh terus menavigasi pepohon XML dengan cara yang sama, menggabungkan ruang nama yang berkaitan.
Nota Tambahan
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyoal Elemen XML dengan Ruang Nama dengan Berkesan menggunakan XDocument?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!