verwendetes Datenbanksystem: <XmlDocument>
Hallo,
beim Abfragen von Daten in einem XmlDocument mit XPath erhalten ich bei der Angabe eines exakten Pfades (z.B. /Stadt/Lokation/Gericht) kein Ergebnis.
Gebe ich hingegen den Pfad nur mit Wildcards (z.B. //) an, so erhalte ich z.B. in der XmlNodeList alle "Lokation"-Knoten.
Auch bei Verwendung eines NamespaceManagers bei der Abfrage erhalte ich gleiche Resultate.
Welche Ursache könnte dies haben?
Viele Grüße
Ernstl
Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉
Magst auch Deinen Code dazu zeigen, was Du aktuell machst?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Meine Glaskugel sagt mir, dass du ein Dokument mit Namespaces hast (entweder xmlns="..."
oder xmlns:pref="..."
mit <pref:element>...
).
X-Path 1.0 (was mit System.Xml
angeboten wird) kann keine Default-Namespace Queries; dh. du musst deinen X-Path in dem Fall immer mit Präfix definieren; egal welche der beiden Formen du benutzt. Der Namespace Manager gibt dir dabei das Mapping von (einem beliebigen) Präfix zu dem (im Dokument verwendeten) Namespace an.
@BhaaL
System.Xml kann durch den XmlNamespaceManager sehr wohl mit den Namespaces umgehen.
Hier muss man nur den XmlNamespaceManager mit den Namespaces füllen und dann an die entsprechenden Überladungen z.B. bei XmlDocument/XmlNode SelectSingleNode/SelectNodes mitgeben.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
@BhaaL
System.Xml kann durch den XmlNamespaceManager sehr wohl mit den Namespaces umgehen.
Ich hatte spezifisch default Namespace Queries (also /Your/Nodes/Here
für <Your xmlns="ns"><Nodes><Here/>...
) geschrieben; also eine Abfrage wo ein unqualified QName tatsächlich ein Element in einem Namespace beschreibt.
Hier muss man nur den XmlNamespaceManager mit den Namespaces füllen und dann an die entsprechenden Überladungen z.B. bei XmlDocument/XmlNode SelectSingleNode/SelectNodes mitgeben.
Korrekt. Das wollte ich mit dem zweiten Teil der Anmerkung auch aussagen (dass man trotz default namespace im Dokument ein Präfix vergeben/nutzen muss).