Comment créer un document XML avec un préfixe de noeud tel que:
Quand j’essaye de lancer quelque chose comme un new XElement("sphinx:docset")
une exception
Exception non gérée: System.Xml.XmlException: le caractère ‘:’, valeur hexadécimale 0x3A, ne peut pas être inclus dans un nom.
à System.Xml.XmlConvert.VerifyNCName (nom de la chaîne, exceptionType exceptionTyp e)
à System.Xml.Linq.XName..ctor (XNamespace ns, Ssortingng localName)
à System.Xml.Linq.XNamespace.GetName (Ssortingng localName)
à System.Xml.Linq.XName.Get (Ssortingng ExpandName)
C’est vraiment facile dans LINQ to XML:
XNamespace ns = "sphinx"; XElement element = new XElement(ns + "docset");
Ou pour que le “alias” fonctionne correctement pour le faire ressembler à vos exemples, quelque chose comme ceci:
XNamespace ns = "http://url/for/sphinx"; XElement element = new XElement("container", new XAtsortingbute(XNamespace.Xmlns + "sphinx", ns), new XElement(ns + "docset", new XElement(ns + "schema"), new XElement(ns + "field", new XAtsortingbute("name", "subject")), new XElement(ns + "field", new XAtsortingbute("name", "content")), new XElement(ns + "attr", new XAtsortingbute("name", "published"), new XAtsortingbute("type", "timestamp"))));
Cela produit:
Vous pouvez lire l’espace de noms de votre document et l’utiliser dans des requêtes comme celles-ci:
XDocument xml = XDocument.Load(address); XNamespace ns = xml.Root.Name.Namespace; foreach (XElement el in xml.Descendants(ns + "whateverYourElementNameIs")) //do stuff