AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

XML: XPath-Ausdruck gesucht

Ein Thema von juergen · begonnen am 7. Dez 2019 · letzter Beitrag vom 7. Dez 2019
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.163 Beiträge
 
Delphi 11 Alexandria
 
#1

XML: XPath-Ausdruck gesucht

  Alt 7. Dez 2019, 02:19
Hallo zusammen,

ich muss eine XML Datei verarbeiten (in eine Datenbank bringen).
Ich bin da schon ziemlich weit, momentan fehlt mir aber eine Möglichkeit Bilder aus bestimmten Knoten auszulesen. Innerhalb meiner ersten NodeList =>
Code:
x_NodeList_Hierarchie_1 := x_queryNode.SelectNodes(xXPath)  xXpath= '//Award/BoQ/BoQBody/BoQCtgy'
laufe ich der Reihe nach die Knoten "BoQCtgy" durch.
Und *innerhalb* dieser ersten Nodelist muss ich eine 2. Nodelist anwenden die dann die Bilder ausliest.

Da ich das Ganze nur schwer beschreiben kann, muss man sich wohl einmal mein Bild aus dem Anhang anschauen.

Wenn ich nachfolgenden XPath-Ausdruck anwende, erhalte ich alle Bilder aus *allen* "BoQCtgy"-Knoten.
Code:
//Award/BoQ/BoQBody/BoQCtgy/BoQBody/Remark/Description/CompleteText/DetailTxt/Text' + '[' + IntToStr(i + 1) + '] + '/p/image'
Ich möchte jedoch nur die Bilder aus dem ersten "BoQCtgy"-Knoten auslesen, wenn meine Schleifenvariable i von der ersten Nodelist bei 0 ist. Wenn i = 2 ist dann eben nur die Bilder aus dem 3. "BoQCtgy"-Knoten.

Wenn ich also nur aus einem Knoten "BoQCtgy" alle Bilder auslesen möchte, wie müsste da mein XPath-Ausdruck lauten?

Ich hoffe ich konnte mein Anliegen einigermaßen anschaulich rüberbringen.

Vielen Dank schon mal vorab!
Miniaturansicht angehängter Grafiken
bild.png  
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen ( 7. Dez 2019 um 02:22 Uhr)
  Mit Zitat antworten Zitat
Alt 7. Dez 2019, 07:01     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.163 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: XML: XPath-Ausdruck gesucht

  Alt 7. Dez 2019, 13:53
Hallo Frühlingsrolle,

Danke für deine Antwort.
Heute Morgen war es wohl schon etwas zu spät...
Nun habe ich das Problem direkt erkannt und lösen können.

Hier der XPath-Ausdruck (auszugsweise und ohne Fehlerbehandlung und Prüfungen):

Code:
{ -------------------------------------------------------------------- }
// Beginn Hierarchie 1
{ -------------------------------------------------------------------- }
lbb_Bild: TBlobByteData;
x_queryNode := frm_Main.my_XMLDocument.DocumentElement;
x_NodeList_Hierarchie_1 := x_queryNode.SelectNodes('// Award/BoQ/BoQBody/BoQCtgy');
IF x_NodeList_Hierarchie_1.Count > 0 THEN
BEGIN
  FOR i := 0 TO Pred(x_NodeList_Hierarchie_1.Count) DO
  BEGIN
    // ....

    // Bilder
    BEGIN
      ls_Knoten_Bilder := '//Award/BoQ/BoQBody/BoQCtgy' + '[' + IntToStr(i + 1) + ']' + '/BoQBody/Remark/Description/CompleteText/DetailTxt/Text/p/image'; { <== entscheidend ist,
        dass i aus der Haupt-Nodelist beim XPath-Ausdruck für die Bilder hinter dem selben Knoten stehen muss wie der Knoten aus der Haupt-Nodelist! }
      x_NodeList_Bilder := x_queryNode.SelectNodes(ls_Knoten_Bilder);
      FOR j := 0 TO Pred(x_NodeList_Bilder.Count) DO
      BEGIN
        lbb_Bild := NIL;
        lbb_Bild := Bild_nativ_erzeugen_aus_Base64_codierten_Daten(x_NodeList_Bilder.Nodes[j].Text); { function }
        // ...
      END;
    END;
  END; // Ende Durchlauf Nodelist Bilder
END; // Ende Durchlauf Nodelist Hirerarchie_1
Somit ist das Problem gelöst.

Allen noch ein schönes Wochenende!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:06 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