Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menyoal Elemen XML dengan Ruang Nama dengan Berkesan menggunakan XDocument?

Bagaimanakah Saya Boleh Menyoal Elemen XML dengan Ruang Nama dengan Berkesan menggunakan XDocument?

Barbara Streisand
Barbara Streisandasal
2025-01-02 19:31:38963semak imbas

How Can I Effectively Query XML Elements with Namespaces using 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

  • Ruang nama XML digunakan untuk mengumpulkan elemen dan atribut secara logik, terutamanya dalam kes di mana berbilang dokumen daripada sumber yang berbeza mungkin menggunakan nama elemen yang serupa.
  • Pastikan untuk menyatakan yang betul ruang nama apabila menanyakan elemen untuk mendapatkan hasil yang tepat.

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!

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