Selesaikan masalah ruang nama XML dalam LINQ kepada XML menyebabkan hasil pertanyaan kosong
Artikel ini membincangkan masalah hasil pertanyaan yang mengembalikan null apabila menggunakan LINQ kepada XML untuk memproses data XML yang mengandungi ruang nama XML. Kod ini direka untuk mengekstrak data daripada XML, tetapi pertanyaan gagal kerana penggunaan ruang nama yang tidak betul.
KaedahLINQ to XML Descendants
dan Element
menerima parameter XName
. Walaupun menggunakan rentetan secara langsung dan bukannya XName
objek boleh menukarnya secara automatik, ia terdedah kepada ralat. Untuk menyelesaikan masalah ini, anda perlu menyatakan ruang nama secara eksplisit menggunakan contoh XNamespace
sebelum menggunakan perwakilan rentetan nama elemen:
XNamespace ns = "http://myvalue.com"; XNamespace nsa = "http://schemas.datacontract.org/2004/07/My.Namespace"; var elements = from data in xmlElements.Descendants(ns + "Result") select new { TheBool = (bool)data.Element(nsa + "TheBool"), TheId = (int)data.Element(nsa + "TheId"), };
Sila ambil perhatian bahawa Descendants
digunakan dalam kaedah ns
dan Element
digunakan dalam kaedah nsa
. Dengan mentakrifkan ruang nama secara eksplisit, anda boleh memastikan bahawa elemen sasaran adalah betul, sekali gus menyelesaikan masalah Descendants
mengembalikan null.
Atas ialah kandungan terperinci Mengapa LINQ Saya ke Pertanyaan XML Kembali Nol Apabila Menggunakan Ruang Nama XML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!