Heim >Backend-Entwicklung >C++ >Wie werden Namespaces in XElement beim Erstellen von XML-Dokumenten richtig behandelt?

Wie werden Namespaces in XElement beim Erstellen von XML-Dokumenten richtig behandelt?

Susan Sarandon
Susan SarandonOriginal
2024-12-28 17:22:10644Durchsuche

How to Properly Handle Namespaces in XElement When Creating XML Documents?

XElement-Namespaces erklärt

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.

Namespaced-Elemente in XElement

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/>

Aliasing der Namespace

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn