Verwalten von Namespaces in einem XML-Dokument

XML-Namespaces ordnen benutzerdefinierten und vordefinierten URIs in einem XML-Dokument Element- und Attributnamen zu. Um diese Zuordnungen zu erstellen, definieren Sie Präfixe für Namespace-URIs und verwenden diese zur Kennzeichnung von Element- und Attributnamen in XML-Daten. Namespaces verhindern Konflikte zwischen Element- und Attributnamen. Sie ermöglichen eine unterschiedliche Verarbeitung und Validierung von gleichnamigen Elementen und Attributen.

Deklarieren von Namespaces

Um einen Namespace für ein Element zu deklarieren, verwenden Sie das xmlns:-Attribut:

xmlns:<name>=<"uri">

<name> entspricht dabei dem Namespacepräfix und <"uri"> dem URI, durch den der Namespace identifiziert wird. Nachdem das Präfix deklariert wurde, können Sie mit ihm Elemente und Attribute in einem XML-Dokument kennzeichnen und diese dem Namespace-URI zuordnen. Da das Namespacepräfix im gesamten Dokument verwendet wird, sollte es möglichst kurz sein.

Im Beispiel werden zwei BOOK-Elemente definiert. Das erste Element wird durch das Präfix mybook, das zweite durch das Präfix bb gekennzeichnet. Jedes Präfix wird einem anderen Namespace-URI zugeordnet:

<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">  
    <bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>

Sie können angeben, dass ein Element Teil eines bestimmten Namespaces ist, indem Sie das Namespacepräfix hinzufügen. Wenn das Author-Element beispielsweise zum mybook-Namespaces gehört, wird es als <mybook:Author> deklariert.

Gültigkeitsbereich der Deklaration

Ein Namespace gilt ab dem Punkt der Deklaration bis zum Ende desjenigen Elements, in dem er deklariert wurde. In diesem Beispiel wird der im BOOK-Element definierte Namespace nicht auf Elemente außerhalb des BOOK-Elements, z. B. das Publisher-Element, angewendet:

<Author>Joe Smith</Author>  
<BOOK xmlns:book="http://www.contoso.com">  
    <title>My Wonderful Day</title>  
      <price>$3.95</price>  
</BOOK>  
<Publisher>  
    <Name>MSPress</Name>  
</Publisher>  

Ein Namespace muss deklariert werden, bevor er verwendet werden kann, aber er muss sich nicht unbedingt am Anfang des XML-Dokuments befinden.

Wenn Sie mehrere Namespaces in einem XML-Dokument verwenden, können Sie einen Namespace als Standardnamespace definieren, um ein übersichtlicheres Dokument zu erstellen. Der Standardnamespace wird im Stammelement deklariert und auf alle nicht gekennzeichneten Elemente im Dokument angewendet. Standardnamespaces gelten nur für Elemente und nicht für Attribute.

Um den Standardnamespace zu verwenden, lassen Sie das Präfix und den Doppelpunkt in der Elementdeklaration aus:

<BOOK xmlns="http://www.contoso.com/books.dtd">  
...
</BOOK>

Verwalten von Namespaces

In der XmlNamespaceManager-Klasse wird eine Sammlung von Namespace-URIs und ihrer Präfixe gespeichert. Sie können Namespaces in der Sammlung suchen, hinzufügen und entfernen. In bestimmten Kontexten ist die Klasse erforderlich, um die XML-Verarbeitungsleistung zu verbessern. So wird XsltContext von der XmlNamespaceManager-Klasse verwendet, um XPath-Unterstützung bereitzustellen.

Der Namespace-Manager führt keine Validierung der Namespaces durch, sondern setzt voraus, dass Präfixe und Namespaces bereits überprüft wurden und der W3C-Spezifikation für Namespaces entsprechen.

Hinweis

LINQ to XML in C# und Visual Basic verwenden nicht XmlNamespaceManager zum Verwalten von Namespaces. Informationen zur Verwaltung von Namespaces bei der Verwendung von LINQ to XML finden Sie in der LINQ-Dokumentation unter Arbeiten mit XML-Namespaces (C#) und Arbeiten mit XML-Namespaces (Visual Basic).

Im Folgenden finden Sie einige der Verwaltungs- und Suchaufgaben, die Sie mit der XmlNamespaceManager-Klasse ausführen können. Weitere Informationen und Beispiele finden Sie, indem Sie den Links zur Referenzseite der einzelnen Methoden oder Eigenschaften folgen.

Beschreibung Verwendung
Hinzufügen eines Namespaces AddNamespace-Methode
Entfernen eines Namespaces RemoveNamespace-Methode
Suchen des URIs für den Standardnamespace DefaultNamespace -Eigenschaft
Suchen des URIs für ein Namespacepräfix LookupNamespace-Methode
Suchen des Präfixes für einen Namespace-URI LookupPrefix-Methode
Abrufen einer Namespaceliste im aktuellen Knoten GetNamespacesInScope-Methode
Festlegen des Gültigkeitsbereichs für einen Namespace Die Methoden PushScope und PopScope
Überprüfen, ob im aktuellen Gültigkeitsbereich ein Präfix definiert ist HasNamespace-Methode
Abrufen der Namenstabelle, die für die Suche nach Präfixen und URIs verwendet wird NameTable -Eigenschaft

Siehe auch