Lorsque vous essayez de créer des documents XML avec des espaces de noms préfixés à l'aide de XElement, tels que :
<sphinx:docset> <sphinx:schema> <sphinx:field name="subject"/> <sphinx:field name="content"/> <sphinx:attr name="published" type="timestamp"/> </sphinx:schema> </sphinx:docset>
vous pouvez rencontrer une exception indiquant que le caractère deux-points n'est pas autorisé dans les noms. Cette réponse complète fournira une explication détaillée et une solution pour résoudre ce problème.
Dans LINQ to XML, la création d'éléments avec espace de noms est simple :
XNamespace ns = "sphinx"; XElement element = new XElement(ns + "docset");
Cette approche génère du XML sans la déclaration explicite de l'espace de noms :
<sphinx:docset/>
Pour que l'alias fonctionne correctement et créer du XML avec des déclarations d'espace de noms explicites, suivez ces étapes :
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"))));
Ce code génère du XML avec la déclaration d'espace de noms souhaitée :
<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>
En résumé, créer des éléments avec espace de noms dans LINQ to XML est simple. En suivant ces étapes, vous pouvez gérer efficacement les déclarations d'espace de noms lorsque vous travaillez avec des données XML.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!