Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menyelesaikan Perlanggaran Ruang Nama Apabila Menggunakan SelectSingleNode dengan XmlDocument?

Bagaimanakah Saya Boleh Menyelesaikan Perlanggaran Ruang Nama Apabila Menggunakan SelectSingleNode dengan XmlDocument?

Susan Sarandon
Susan Sarandonasal
2025-01-07 20:56:41305semak imbas

How Can I Resolve Namespace Collisions When Using SelectSingleNode with 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

Pertimbangkan coretan XML ini menggunakan atribut

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

Untuk memilih elemen

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!

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