Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Xpath - alle Kinder eines bestimmten Elternteils (https://www.delphipraxis.net/69615-xpath-alle-kinder-eines-bestimmten-elternteils.html)

s-off 17. Mai 2006 19:40


Xpath - alle Kinder eines bestimmten Elternteils
 
Hallo nochmal,

habe immer noch folgende XML-Datei:

XML-Code:
<?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>
Was ich jetzt an Informationen habe, sind die Ordnernamen, also beispielsweise dieses hier: <name>Ordner1</name>

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:
var
   nodeFolder: IXMLDOMNode;
   nodesFiles: IXMLDOMNodeList;
begin
nodeFolder := xmlDoc.documentElement.selectSingleNode('ordner[name="' + Data.Caption + '"]');
nodesFiles := xmlDoc.documentElement.selectNodes(nodeFolder.nodeName + '/datei');
[...]
wobei Data.Caption der Name des Ordners ist. Bei diesem Konstrukt knallt es allerdings in der zweiten Zeile (Exception), da nodeFolder := NIL bleibt :?

Ich blicke an XPath einfach net dran lang :(

Luckie 17. Mai 2006 19:56

Re: Xpath - alle Kinder eines bestimmten Elternteils
 
Ich habe es so gemacht: http://www.delphipraxis.net/internal...ct.php?t=83151

s-off 17. Mai 2006 20:03

Re: Xpath - alle Kinder eines bestimmten Elternteils
 
Hi,

bei Dir sieht die XML-Datei so aus

XML-Code:
<zeitraum jahr="2007">
bei mir würde sie mit Deinen Daten allerdings so aussehen, so dass das leider nicht funktioniert :(

XML-Code:
<zeitraum>
   <jahr>"2007"</jahr>

Luckie 17. Mai 2006 20:07

Re: Xpath - alle Kinder eines bestimmten Elternteils
 
Das ist doch egal.

s-off 17. Mai 2006 20:24

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

Dax 17. Mai 2006 20:30

Re: Xpath - alle Kinder eines bestimmten Elternteils
 
Hm, wie wärs mit
Code:
/document/ordner[name="foobar"]/*
als Path für selectNodes? Dann könntest du ja über selectSingleNode auf die einzelnen Unterdinger zugreifen?

*schonmal wegduck weil sich alles nur aus luckies thread erschlossen hat* :duck:

s-off 17. Mai 2006 21:00

Re: Xpath - alle Kinder eines bestimmten Elternteils
 
Ich pack mir echt gleich an die Birne.

Delphi-Quellcode:
nodesFiles := xmlDoc.documentElement.selectNodes('//ordner[name="' + Data.Caption + '"]/datei');
Und warum hat das jetzt so lange gedauert?!? :wall:

Danke Euch beiden :wink:

la.reunion 9. Jul 2006 22:13

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 12:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz