Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memilih Nod XML dengan Ruang Nama Menggunakan C#?

Bagaimana untuk Memilih Nod XML dengan Ruang Nama Menggunakan C#?

Linda Hamilton
Linda Hamiltonasal
2025-01-07 20:27:41573semak imbas

How to Select XML Nodes with Namespaces Using C#?

Masalah yang dihadapi semasa memilih nod XML dengan ruang nama dalam C#

Pertimbangkan dokumen XML yang mengandungi ruang nama dengan struktur berikut:

<code class="language-xml"><?xml version="1.0" encoding="utf-8"?><project defaulttargets="Build" toolsversion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><itemgroup><compile include="clsWorker.cs"></compile></itemgroup></project></code>

Jika anda cuba mendapatkan SelectSingleNode nod menggunakan kaedah Compile tanpa menyatakan ruang nama, null akan dikembalikan:

<code class="language-csharp">XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(Xml);

XmlNode node = xmldoc.SelectSingleNode("//Compile"); // 返回null</code>

Penyelesaian: Gunakan XmlNamespaceManager

Untuk mendapatkan semula nod Compile dengan betul jika elemen akar mempunyai ruang nama, XmlNamespaceManager harus digunakan:

<code class="language-csharp">XmlNamespaceManager ns = new XmlNamespaceManager(xmldoc.NameTable);
ns.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003");
XmlNode node = xmldoc.SelectSingleNode("//msbld:Compile", ns);</code>

Dengan menambahkan pengurus ruang nama dan menentukan awalan ruang nama yang betul (dalam kes ini "msbld"), kaedah SelectSingleNode akan berjaya mencari dan mengembalikan nod yang diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Nod XML dengan Ruang Nama Menggunakan C#?. 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