Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memilih Nod XML dengan Ruang Nama Menggunakan 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!