![]() |
XML: XPath-Ausdruck gesucht
Liste der Anhänge anzeigen (Anzahl: 1)
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:
laufe ich der Reihe nach die Knoten "BoQCtgy" durch.
x_NodeList_Hierarchie_1 := x_queryNode.SelectNodes(xXPath) xXpath= '//Award/BoQ/BoQBody/BoQCtgy'
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:
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.
//Award/BoQ/BoQBody/BoQCtgy/BoQBody/Remark/Description/CompleteText/DetailTxt/Text' + '[' + IntToStr(i + 1) + '] + '/p/image'
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! |
AW: XML: XPath-Ausdruck gesucht
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:
Somit ist das Problem gelöst.
{ -------------------------------------------------------------------- }
// 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 Allen noch ein schönes Wochenende! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 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 by Thomas Breitkreuz