Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
XPath-Abfragen kennen Namespaces in einem XML-Dokument und können Namespacepräfixe verwenden, um Element- und Attributnamen zu qualifizieren. Qualifizierende Element- und Attributnamen mit einem Namespacepräfix beschränken die von einer XPath-Abfrage zurückgegebenen Knoten auf nur die Knoten, die zu einem bestimmten Namespace gehören.
Wenn das Präfix books
beispielsweise dem Namespace http://www.contoso.com/books
zugeordnet ist, wählt die folgende XPath-Abfrage /books:books/books:book
nur die book
Elemente im Namespace http://www.contoso.com/books
aus.
The XmlNamespaceManager
Um Namespaces in einer XPath-Abfrage zu verwenden, wird ein von der IXmlNamespaceResolver Schnittstelle abgeleitetes Objekt wie die XmlNamespaceManager Klasse mit dem Namespace-URI und dem Präfix erstellt, das in die XPath-Abfrage eingeschlossen werden soll.
Das XmlNamespaceManager Objekt kann in der Abfrage auf jede der folgenden Arten verwendet werden.
Das XmlNamespaceManager Objekt wird einem vorhandenen XPathExpression Objekt mithilfe der SetContext Methode des XPathExpression Objekts zugeordnet. Sie können auch ein neues XPathExpression Objekt mithilfe der statischen Compile Methode kompilieren, die eine Zeichenfolge verwendet, die den XPath-Ausdruck und ein XmlNamespaceManager Objekt als Parameter darstellt und ein neues XPathExpression Objekt zurückgibt.
Das XmlNamespaceManager Objekt selbst wird zusammen mit einer Zeichenfolge, die den XPath-Ausdruck darstellt, als Parameter an eine akzeptierte XPathNavigator Klassenmethode übergeben.
Im Folgenden sind die Methoden der XPathNavigator Klasse aufgeführt, die ein von der IXmlNamespaceResolver Schnittstelle abgeleitetes Objekt als Parameter akzeptieren.
Der Standardnamespace
Im folgenden XML-Dokument wird der Standardnamespace mit einem leeren Präfix verwendet, um den http://www.contoso.com/books
Namespace zu deklarieren.
<books xmlns="http://www.contoso.com/books">
<book>
<title>Title</title>
<author>Author Name</author>
<price>5.50</price>
</book>
</books>
XPath behandelt das leere Präfix als null
Namespace. Mit anderen Worten, nur Präfixe, die Namespaces zugeordnet sind, können in XPath-Abfragen verwendet werden. Dies bedeutet: Wenn Sie einen Namespace in einem XML-Dokument abfragen möchten, auch wenn es sich um den Standardnamespace handelt, müssen Sie dafür ein Präfix definieren.
Ohne z. B. ein Präfix für das oben genannte XML-Dokument zu definieren, gibt die XPath-Abfrage /books/book
keine Ergebnisse zurück.
Ein Präfix muss gebunden werden, um Mehrdeutigkeiten zu vermeiden, wenn Dokumente abgefragt werden, bei denen einige Knoten nicht in einem Namespace sind und andere in einem Standard-Namespace.
Der folgende Code definiert ein Präfix für den Standardnamespace und wählt alle book
Elemente aus dem http://www.contoso.com/books
Namespace aus.
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim query As XPathExpression = navigator.Compile("/books:books/books:book")
Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("books", "http://www.contoso.com/books")
query.SetContext(manager)
Dim nodes As XPathNodeIterator = navigator.Select(query)
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathExpression query = navigator.Compile("/books:books/books:book");
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("books", "http://www.contoso.com/books");
query.SetContext(manager);
XPathNodeIterator nodes = navigator.Select(query);
Siehe auch
- XmlDocument
- XPathDocument
- XPathNavigator
- Verarbeiten von XML-Daten mithilfe des XPath-Datenmodells
- Auswählen von XML-Daten mit XPathNavigator
- Auswerten von XPath-Ausdrücken mit XPathNavigator
- Abgleichen von Knoten mit XPathNavigator
- Knotentypen, die mit XPath-Abfragen erkannt werden
- Kompilierte XPath-Ausdrücke