![]() |
Xpath - alle Kinder eines bestimmten Elternteils
Hallo nochmal,
habe immer noch folgende XML-Datei:
XML-Code:
Was ich jetzt an Informationen habe, sind die Ordnernamen, also beispielsweise dieses hier: <name>Ordner1</name>
<?xml version='1.0' encoding='UTF-8'?>
<document> <ordner> <name>Ordner1</name> <datei> <name>Datei1</name> <groesse>Groesse1</groesse> <attribut>Attribut1</attribut> </datei> <ordner> <name>Ordner2</name> <datei> <name>Datei2</name> <groesse>Groesse2</groesse> <attribut>Attribut2</attribut> </datei> <datei> <name>Datei3</name> <groesse>Groesse3</groesse> <attribut>Attribut3</attribut> </datei> <datei> <name>Datei4</name> <groesse>Groesse4</groesse> <attribut>Attribut4</attribut> </datei> <ordner> <name>Ordner3</name> <datei> <name>Datei2</name> <groesse>Groesse2</groesse> <attribut>Attribut2</attribut> </datei> <datei> <name>Datei3</name> <groesse>Groesse3</groesse> <attribut>Attribut3</attribut> </datei> <datei> <name>Datei4</name> <groesse>Groesse4</groesse> <attribut>Attribut4</attribut> </datei> </ordner> </ordner> </ordner> </document> Ich möchte nun auf alle Dateien <datei> und deren Elemente <name>, <groesse> und <attribut> zugreifen, die sich innerhalb dieses Ordners befinden. Leider bekomme ich es nicht hin, die XPath-Abfrage ordentlich zu erstellen :( Habe es versucht mit
Delphi-Quellcode:
wobei Data.Caption der Name des Ordners ist. Bei diesem Konstrukt knallt es allerdings in der zweiten Zeile (Exception), da nodeFolder := NIL bleibt :?
var
nodeFolder: IXMLDOMNode; nodesFiles: IXMLDOMNodeList; begin nodeFolder := xmlDoc.documentElement.selectSingleNode('ordner[name="' + Data.Caption + '"]'); nodesFiles := xmlDoc.documentElement.selectNodes(nodeFolder.nodeName + '/datei'); [...] Ich blicke an XPath einfach net dran lang :( |
Re: Xpath - alle Kinder eines bestimmten Elternteils
Ich habe es so gemacht:
![]() |
Re: Xpath - alle Kinder eines bestimmten Elternteils
Hi,
bei Dir sieht die XML-Datei so aus
XML-Code:
bei mir würde sie mit Deinen Daten allerdings so aussehen, so dass das leider nicht funktioniert :(
<zeitraum jahr="2007">
XML-Code:
<zeitraum>
<jahr>"2007"</jahr> |
Re: Xpath - alle Kinder eines bestimmten Elternteils
Das ist doch egal.
|
Re: Xpath - alle Kinder eines bestimmten Elternteils
Ich dachte, das @ wäre nur dafür da, um auf Attribute zuzugreifen, also Werte, die innerhalb der spitzen Klammern stehen.
Bei mir ist der Name aber ja eine separate Node. => Habe also das gleiche Ergebnis, die Node bleibt NIL |
Re: Xpath - alle Kinder eines bestimmten Elternteils
Hm, wie wärs mit
Code:
als Path für selectNodes? Dann könntest du ja über selectSingleNode auf die einzelnen Unterdinger zugreifen?
/document/ordner[name="foobar"]/*
*schonmal wegduck weil sich alles nur aus luckies thread erschlossen hat* :duck: |
Re: Xpath - alle Kinder eines bestimmten Elternteils
Ich pack mir echt gleich an die Birne.
Delphi-Quellcode:
Und warum hat das jetzt so lange gedauert?!? :wall:
nodesFiles := xmlDoc.documentElement.selectNodes('//ordner[name="' + Data.Caption + '"]/datei');
Danke Euch beiden :wink: |
Re: Xpath - alle Kinder eines bestimmten Elternteils
Kannst du mir sagen wie ich bestimmte werte auslesen aknn aus einer xml?
Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz