Rumah > pembangunan bahagian belakang > C++ > Bagaimana Menghuraikan Dokumen XML dengan Ruang Nama dengan betul menggunakan XDocument?

Bagaimana Menghuraikan Dokumen XML dengan Ruang Nama dengan betul menggunakan XDocument?

Mary-Kate Olsen
Lepaskan: 2024-12-30 01:42:36
asal
546 orang telah melayarinya

How to Properly Parse XML Documents with Namespaces using XDocument?

Cara Menghuraikan XML dengan Ruang Nama dalam XDocument

Apabila bekerja dengan XML yang mengandungi ruang nama, adalah penting untuk mengendalikannya dengan betul dalam kod anda . Tanpa menyatakan ruang nama yang betul, XDocument mungkin tidak dapat menghuraikan XML dengan berkesan.

Pertimbangkan contoh XML berikut:

<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}">
    </Correlation>
  </System>
</E2ETraceEvent>
Salin selepas log masuk

Jika anda cuba menghuraikan XML ini menggunakan XDocument tanpa menyatakan ruang nama, anda mungkin menemui nilai nol untuk elemen tertentu. Berikut ialah coretan kod yang menggambarkan isu ini:

XDocument xDoc = XDocument.Parse(XMLString);
XElement xEl1 = xDoc.Element("E2ETraceEvent");
XElement xEl2 = xEl1.Element("System");
XElement xEl3 = xEl2.Element("Correlation");
XAttribute xAtt1 = xEl3.Attribute("ActivityID");
String sValue = xAtt1.Value; // Returns null
Salin selepas log masuk

Penyelesaian: Menggunakan Ruang Nama

Untuk menghuraikan XML dengan ruang nama dengan betul, anda perlu menggunakan strategi berikut:

  1. Tentukan awalan ruang nama untuk setiap ruang nama yang digunakan dalam XML.
  2. Gunakan awalan ruang nama apabila merujuk elemen dalam XML.

Berikut ialah coretan kod dikemas kini yang menunjukkan penyelesaian ini:

XNamespace nsSys = "http://schemas.microsoft.com/2004/06/windows/eventlog/system";
XElement xEl2 = xDoc.Element(nsSys + "System");
XElement xEl3 = xEl2.Element(nsSys + "Correlation");
XAttribute xAtt1 = xEl3.Attribute("ActivityID");
String sValue = xAtt1.Value; // Returns the ActivityID
Salin selepas log masuk

Dengan menggunakan ruang nama dengan betul, anda boleh memastikan bahawa kod anda boleh mengekstrak dan memanipulasi data dengan tepat daripada dokumen XML yang mengandungi ruang nama.

Atas ialah kandungan terperinci Bagaimana Menghuraikan Dokumen XML dengan Ruang Nama dengan betul menggunakan XDocument?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan