Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menyelesaikan Perlanggaran Ruang Nama Apabila Menggunakan SelectSingleNode dengan XmlDocument?
Menavigasi Konflik Ruang Nama dalam Penghuraian XML dengan XmlDocument
Dokumen XML selalunya menggunakan ruang nama untuk membezakan elemen dengan nama yang sama tetapi asal usul yang berbeza. Ini boleh merumitkan pemilihan elemen menggunakan kaedah XmlDocument
.SelectSingleNode
untuk mentakrifkan xmlns
ruang nama:http://schemas.microsoft.com/developer/msbuild/2003
<code class="language-xml"><project defaulttargets="Build" toolsversion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <Compile include="clsWorker.cs"/> </ItemGroup> </project></code>Percubaan naif untuk mendapatkan semula
elemen:<Compile>
<code class="language-csharp">XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(xml); XmlNode node = xmldoc.SelectSingleNode("//Compile");</code>akan menghasilkan
. Ini kerana ungkapan XPath mengabaikan ruang nama. Penyelesaiannya terletak pada penggunaan null
:XmlNamespaceManager
dengan betul dalam XML ruang nama, gunakan <Compile>
untuk memetakan ruang nama kepada awalan:XmlNamespaceManager
<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>Kini,
akan mengembalikan elemen SelectSingleNode
dengan tepat, membenarkan akses kepada atribut dan nod anaknya. Pendekatan ini menyelesaikan perlanggaran ruang nama dengan berkesan dan membolehkan manipulasi XML yang mantap.<Compile>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Perlanggaran Ruang Nama Apabila Menggunakan SelectSingleNode dengan XmlDocument?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!