Autor Beitrag
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 30.07.14 09:14 
Gestern hatte ich ein kleines Problem mit einer XML-Datei. Dafür hätte ich die Information, wie das Namespace-Prefix heißt, gebrauchen können.

Das Problem habe ich inzwischen anders gelöst, dennoch würde mich interessieren, ob man die Info aus einer XML-Datei auslesen kann. In meinem Fall gab es nur ein Namespace, aber interessant wäre es natürlich auch, wie es mit mehreren Namespaces aussieht.

Leider kann man nicht sicherstellen, dass der Tag bekannt ist, in dem das Prefix definiert ist. Natürlich kann man einfach alle Zeilen durchgehen und nach "xmlns" suchen, aber ich denke, es gibt eine bessere Möglichkeit.

Google hat mir nicht weitergeholfen. Dort habe ich nur Infos gefunden, wie man ein Namespace definiert.

Kennt jemand die Lösung und falls ja, wie sieht die aus?

Edit:
Warum ich das Prefix benötige liegt an folgendem:
ausblenden Delphi-Quelltext
1:
if AnsiLowerCase(nl[cnt].NodeName) = cNodePrefix + 'reference' then					

Der Aufbau der XML-Datei erfordert es, dass ich eine NodeList durchgehen muss, um die richtigen Nodes zu finden. Da es mehrere zu einem Namen gibt und die Daten "durcheinander" innerhalb einer NodeList sein können, muss ich den NodeName in einer Schleife prüfen. FindNode funktioniert da leider nicht. Der NodeName wird aber mit dem Namespace-Prefix übergeben.
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 30.07.14 15:29 
Vielleicht ist hier was Brauchbares:
www.delphipraxis.net/1248094-post3.html
jasocul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 31.07.14 07:55 
So sieht der Anfang der XML-Datei in etwa aus:
ausblenden XML-Daten
1:
2:
<?xml version="1.0" encoding="UTF-8"?>
<ns2:Datenbereich xmlns:ns2="irgendetwas">

Dabei muss das nicht zwingend "Datenbereich" heißen. Da kann auch etwas völlig anderes stehen, was nicht bekannt ist.
Ich möchte eigentlich nur wissen, ob man feststellen kann, welche Namespaces es in einer XML-Datei gibt, ohne die ganze Datei zu parsen und nach "xmlns" zu suchen.

@user profile iconhathor:
Bei deinem Beispiel ist der Node bekannt. Dann ist es kein Problem das Namespace-Prefix festzustellen.

Meine Frage ist für mein Programm auch nicht mehr relevant, da ich mein Problem anders lösen konnte. Aber dennoch interessiert es mich, ob es eine Lösung ohne zu parsen gibt.