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
Lepaskan: 2025-01-07 20:59:42
asal
187 orang telah melayarinya

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

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

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!

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