Freigeben über


Behandlung von Namespaces im "XmlWriter"

Mit Namespaces werden Element- und Attributnamen in XML-Dokumenten qualifiziert. Namespacepräfixe ordnen Elemente und Attribute Namespaces zu, die wiederum URI-Verweisen (Uniform Resource Identifier) zugeordnet sind. Namespaces gewährleisten eindeutige Element- und Attributnamen in einem XML-Dokument.

Der XmlWriter verwaltet eine Namespaceliste, die allen im aktuellen Namespacebereich definierten Namespaces entspricht. Beim Schreiben von Elementen und Attributen können Sie Namespaces für folgende Aufgaben verwenden:

  • Manuelles Deklarieren von Namespaces.

  • Überschreiben der aktuellen Namespacedeklaration mit einem neuen Namespace.

  • Angeben eines Namespacepräfixes beim Schreiben von Attributen oder Elementen.

Manuelles Deklarieren von Namespaces

Namespacedeklarationen können manuell mit der WriteAttributeString-Methode geschrieben werden. Dies kann hilfreich sein, wenn Sie wissen, wie die Anzahl der Namespacedeklarationen optimiert werden kann. Im folgenden Codebeispiel wird eine Namespacedeklaration im Stammelement erstellt.

writer.WriteStartElement("root")
writer.WriteAttributeString("xmlns", "x", Nothing, "urn:1")
writer.WriteStartElement("item", "urn:1")
writer.WriteEndElement()
writer.WriteStartElement("item", "urn:1")
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteStartElement("root");
writer.WriteAttributeString("xmlns", "x", null, "urn:1");
writer.WriteStartElement("item", "urn:1");
writer.WriteEndElement();
writer.WriteStartElement("item", "urn:1");
writer.WriteEndElement();
writer.WriteEndElement();

Der Code generiert die folgende XML-Zeichenfolge:

<root xmlns:x="urn:1">
  <x:item/>
  <x:item/>
</root>

Da sich die Namespacedeklaration im root-Element befindet, wird sie nicht für die beiden untergeordneten Elementen dupliziert. Die item-Elemente übernehmen außerdem das Präfix aus der Namespacedeklaration.

Überschreiben von aktuellen Namespaces

Mit einem angegebenen Präfix verbundene Namespaces können manuell überschrieben werden. Im folgenden Code wird der Namespace-URI für das Präfix "x" von "123" in "abc" geändert.

writer.WriteStartElement("x", "root", "123")
writer.WriteStartElement("item")
writer.WriteAttributeString("xmlns", "x", Nothing, "abc")
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteStartElement("x", "root", "123");
writer.WriteStartElement("item");
writer.WriteAttributeString("xmlns", "x", null, "abc");
writer.WriteEndElement();
writer.WriteEndElement();

Der Code generiert die folgende XML-Zeichenfolge:

<x:root xmlns:x="123">
  <item xmlns:x="abc" />
</x:root>

Angeben eines Namespacepräfixes

Sie können ein Namespacepräfix auch zur Verwendung übergeben, indem Sie beim Schreiben eines Elements oder Attributs ein Präfix explizit angeben. Bei vielen Methoden zum Schreiben von Elementen oder Attributen ist das Angeben eines Namespacepräfixes zulässig. Im folgenden Code wird dargestellt, wie ein Präfix beim Schreiben eines Elements angegeben wird.

writer.WriteStartElement("x", "root", "urn:1")
writer.WriteStartElement("y", "item", "urn:1")
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteStartElement("x", "root", "urn:1");
writer.WriteStartElement("y", "item", "urn:1");
writer.WriteEndElement();
writer.WriteEndElement();

Der Code schreibt die folgende XML-Zeichenfolge:

<x:root xmlns:x="urn:1">
  <y:item xmlns:y="urn:1"/>
</x:root>

Der XmlWriter behält beide Präfixe ("x" und "y") bei.

HinweisHinweis

Alle XmlWriter-Implementierungen, einschließlich XmlTextWriter, ermöglichen beim Bereitstellen eines Präfixes einen leeren Namespace.In diesem Fall wird das Präfix vom Writer ignoriert.Dieses Verhalten hat sich gegenüber Microsoft .NET Framework, Version 2.0, geändert.In früheren Versionen führte diese Bedingung zum Auslösen einer XmlException.

Siehe auch

Weitere Ressourcen

Schreiben von XML mit dem "XmlWriter"