Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Menggunakan SelectSingleNode dalam C# untuk Mendapatkan Elemen XML dengan Ruang Nama?

Bagaimanakah Saya Menggunakan SelectSingleNode dalam C# untuk Mendapatkan Elemen XML dengan Ruang Nama?

Barbara Streisand
Lepaskan: 2025-01-07 20:53:10
asal
992 orang telah melayarinya

How Do I Use SelectSingleNode in C# to Retrieve XML Elements with Namespaces?

Menggunakan SelectSingleNode untuk mengendalikan ruang nama XML dalam C#

Masalah biasa apabila mengakses elemen XML menggunakan SelectSingleNode ialah ia mungkin mengembalikan null jika teg mengandungi ruang nama XML. Masalah ini berlaku kerana SelectSingleNode hanya mempertimbangkan elemen dalam ruang nama lalai secara lalai.

Pertimbangkan contoh struktur XML yang disediakan:

<code class="language-xml"><project defaulttargets="Build" toolsversion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><itemgroup><compile include="clsWorker.cs"></compile></itemgroup></project></code>
Salin selepas log masuk

Apabila memuatkan XML ini ke dalam XmlDocument dan cuba mendapatkan semula elemen "Kompilasi":

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

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

Hasilnya adalah batal kerana elemen "Kompilasi" terletak dalam "https://www.php.cn/link/55a51239dc6fe8cf8c09ec91f36f5250.

Penyelesaian: Gunakan XmlNamespaceManager

Untuk menyelesaikan masalah ini, kita perlu menggunakan XmlNamespaceManager untuk menentukan ruang nama yang betul semasa melakukan operasi SelectSingleNode:

<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>
Salin selepas log masuk

XmlNamespaceManager membolehkan kami memetakan awalan ruang nama "msbld" kepada URI ruang nama sebenar. Dengan pendekatan ini, kami kini boleh berjaya mendapatkan semula elemen "Kompilasi" menggunakan sintaks SelectSingleNode yang diubah suai.

Atas ialah kandungan terperinci Bagaimanakah Saya Menggunakan SelectSingleNode dalam C# untuk Mendapatkan Elemen XML dengan Ruang Nama?. 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