AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Xpath - alle Kinder eines bestimmten Elternteils
Thema durchsuchen
Ansicht
Themen-Optionen

Xpath - alle Kinder eines bestimmten Elternteils

Ein Thema von s-off · begonnen am 17. Mai 2006 · letzter Beitrag vom 9. Jul 2006
Antwort Antwort
s-off
(Gast)

n/a Beiträge
 
#1

Xpath - alle Kinder eines bestimmten Elternteils

  Alt 17. Mai 2006, 20:40
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Xpath - alle Kinder eines bestimmten Elternteils

  Alt 17. Mai 2006, 20:56
Ich habe es so gemacht: http://www.delphipraxis.net/internal...ct.php?t=83151
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#3

Re: Xpath - alle Kinder eines bestimmten Elternteils

  Alt 17. Mai 2006, 21:03
Hi,

bei Dir sieht die XML-Datei so aus

<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>
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Xpath - alle Kinder eines bestimmten Elternteils

  Alt 17. Mai 2006, 21:07
Das ist doch egal.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#5

Re: Xpath - alle Kinder eines bestimmten Elternteils

  Alt 17. Mai 2006, 21:24
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
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Xpath - alle Kinder eines bestimmten Elternteils

  Alt 17. Mai 2006, 21:30
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*
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#7

Re: Xpath - alle Kinder eines bestimmten Elternteils

  Alt 17. Mai 2006, 22:00
Ich pack mir echt gleich an die Birne.

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

Danke Euch beiden
  Mit Zitat antworten Zitat
la.reunion

Registriert seit: 30. Apr 2006
152 Beiträge
 
#8

Re: Xpath - alle Kinder eines bestimmten Elternteils

  Alt 9. Jul 2006, 23:13
Kannst du mir sagen wie ich bestimmte werte auslesen aknn aus einer xml?

Danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 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