Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Ruang Nama XML Mempengaruhi `SelectSingleNode` dan Bagaimana Saya Boleh Memilih Nod dengan Betul?

Bagaimanakah Ruang Nama XML Mempengaruhi `SelectSingleNode` dan Bagaimana Saya Boleh Memilih Nod dengan Betul?

Susan Sarandon
Susan Sarandonasal
2025-01-07 20:59:42246semak imbas

How Does XML Namespace Affect `SelectSingleNode` and How Can I Correctly Select Nodes?

Menavigasi XML dengan Ruang Nama: SelectSingleNode Cabaran

Apabila bekerja dengan dokumen XML yang mengandungi ruang nama, kaedah SelectSingleNode standard dalam .NET boleh bertindak secara tidak dijangka. Ini kerana ungkapan XPath mudah seperti //Compile tidak memahami ruang nama secara semulajadi.

Mari kita ilustrasikan dengan contoh:

<code class="language-xml"><project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <itemgroup>
    <compile include="clsWorker.cs"/>
  </itemgroup>
</project></code>

Percubaan untuk memilih nod <compile> menggunakan xmldoc.SelectSingleNode("//Compile") akan mengembalikan null. Pengisytiharan ruang nama xmlns="http://schemas.microsoft.com/developer/msbuild/2003" adalah puncanya.

Penyelesaian: Memanfaatkan Kuasa XmlNamespaceManager

Kunci untuk memilih nod dengan betul dalam XML ruang nama ialah menggunakan kelas XmlNamespaceManager. Kelas ini membolehkan anda mentakrifkan awalan ruang nama dan URI yang sepadan dengan jelas.

Begini cara anda boleh mengubah suai kod anda:

<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>

Kami mencipta XmlNamespaceManager, menambah pemetaan ruang nama ("msbld" sebagai awalan untuk URI yang ditentukan), dan kemudian menyerahkan pengurus ini kepada SelectSingleNode. Ungkapan XPath //msbld:Compile kini dengan betul mengenal pasti nod dalam ruang nama yang ditentukan. Pendekatan ini memastikan pemilihan nod yang tepat walaupun dalam struktur XML yang kompleks dan ruang nama.

Atas ialah kandungan terperinci Bagaimanakah Ruang Nama XML Mempengaruhi `SelectSingleNode` dan Bagaimana Saya Boleh Memilih Nod dengan Betul?. 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