Awalan Ruang Nama XML dalam XElement
Membuat dokumen XML dengan awalan nod boleh mencabar menggunakan XElement. Soalan ini meneroka cara mengendalikan ruang nama awalan apabila menggunakan XElement.
Soalan: Bagaimanakah kita boleh menjana dokumen XML dengan nod awalan seperti contoh ini?
<sphinx:docset> <sphinx:schema> <sphinx:field name="subject"/> <sphinx:field name="content"/> <sphinx:attr name="published" type="timestamp"/> </sphinx:schema> </sphinx:docset>
Pengecualian: Menggunakan XElement("sphinx:docset") baharu melemparkan pengecualian:
Unhandled Exception: System.Xml.XmlException: The ':' character, hexadecimal val ue 0x3A, cannot be included in a name.
Jawapan: Menggunakan LINQ ke XML, kami boleh menambah ruang nama pada elemen dengan mudah.
XNamespace ns = "sphinx"; XElement element = new XElement(ns + "docset");
Untuk menentukan alias seperti dalam contoh, gunakan yang 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 akan menghasilkan struktur XML 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:docset> </container>
Atas ialah kandungan terperinci Bagaimana untuk Menjana Dokumen XML dengan Nod Awalan menggunakan XElement?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!