Beim Versuch, XML-Dokumente mit vorangestellten Namespaces mithilfe von XElement zu erstellen, wie zum Beispiel:
<sphinx:docset> <sphinx:schema> <sphinx:field name="subject"/> <sphinx:field name="content"/> <sphinx:attr name="published" type="timestamp"/> </sphinx:schema> </sphinx:docset>
kann eine Ausnahme auftreten mit der Angabe, dass Doppelpunkte in Namen nicht zulässig sind. Diese umfassende Antwort bietet eine detaillierte Erklärung und eine Lösung zur Lösung dieses Problems.
In LINQ to XML ist das Erstellen von Namespace-Elementen unkompliziert:
XNamespace ns = "sphinx"; XElement element = new XElement(ns + "docset");
Dieser Ansatz generiert XML ohne die explizite Namespace-Deklaration:
<sphinx:docset/>
Damit der Alias korrekt funktioniert und XML mit expliziten Namespace-Deklarationen erstellt wird, führen Sie die folgenden Schritte aus:
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"))));
Dieser Code generiert XML mit der gewünschten Namespace-Deklaration:
<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>
Zusammenfassend lässt sich sagen, dass das Erstellen von Namespace-Elementen in LINQ to XML einfach ist. Wenn Sie diese Schritte befolgen, können Sie Namespace-Deklarationen effektiv handhaben, wenn Sie mit XML-Daten arbeiten.
Das obige ist der detaillierte Inhalt vonWie werden Namespaces in XElement beim Erstellen von XML-Dokumenten richtig behandelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!