Apabila cuba mencipta dokumen XML dengan ruang nama awalan menggunakan XElement, seperti:
<sphinx:docset> <sphinx:schema> <sphinx:field name="subject"/> <sphinx:field name="content"/> <sphinx:attr name="published" type="timestamp"/> </sphinx:schema> </sphinx:docset>
anda mungkin menghadapi pengecualian menyatakan bahawa aksara kolon tidak dibenarkan dalam nama. Jawapan komprehensif ini akan memberikan penjelasan terperinci dan penyelesaian untuk menyelesaikan isu ini.
Dalam LINQ ke XML, mencipta elemen ruang nama adalah mudah:
XNamespace ns = "sphinx"; XElement element = new XElement(ns + "docset");
Pendekatan ini menjana XML tanpa pengisytiharan ruang nama yang jelas:
<sphinx:docset/>
Untuk menjadikan alias berfungsi dengan betul dan mencipta XML dengan pengisytiharan ruang nama yang jelas, ikut langkah berikut:
XNamespace ns = "http://url/for/sphinx"; XElement element = new XElement("container", new XAttribute(XNamespace.Xmlns + "sphinx", ns), new XElement(ns + "docset", new XElement(ns + "schema"), new XElement(ns + "field", new XAttribute("name", "subject")), new XElement(ns + "field", new XAttribute("name", "content")), new XElement(ns + "attr", new XAttribute("name", "published"), new XAttribute("type", "timestamp"))));
Kod ini menjana XML dengan pengisytiharan ruang nama yang diingini:
<container xmlns:sphinx="http://url/for/sphinx"> <sphinx:docset> <sphinx:schema> <sphinx:field name="subject"/> <sphinx:field name="content"/> <sphinx:attr name="published" type="timestamp"/> </sphinx:schema> </sphinx:docset> </container>
Ringkasnya, mencipta elemen ruang nama dalam LINQ kepada XML adalah mudah. Dengan mengikut langkah ini, anda boleh mengendalikan pengisytiharan ruang nama dengan berkesan apabila bekerja dengan data XML.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Ruang Nama dengan Betul dalam XElement Apabila Mencipta Dokumen XML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!