![]() |
Re: suche in xml
Aha. Na ja, dann mach´s wie ich vorgeschlagen habe:
Code:
mit "selectNodes", und du hast alle (wenn es mehrere sind) Namen in IXMLDOMNodeList. Den Rest machst du wie vorgeschlagen in einer Schleife.
/tester_db/tester/name
|
Re: suche in xml
ok.. dein vorschlag hört sich logisch an.. funktioniert aber bei mir noch nicht ganz :(
Delphi-Quellcode:
nl:= xmldoc.documentElement.selectNodes('tester_db/tester/name');
for i := 0 to nl.length - 1 do begin if lowercase(nl.item[i].nodeValue) = lowercase(LabeledEdit1.Text) then subNode := nl.item[i].selectSingleNode('id'); ListView1.Items.Add; ListView1.Items[i].Caption := subNode.text; with ListView1.Items[i].SubItems do begin subNode := nl.item[i].selectSingleNode('name'); if subNode <> nil then Add(subNode.text); |
Re: suche in xml
Zitat:
XML-Code:
Tut sie aber bestimmt nicht. Bitte beachte, dass du dich mit der XPath-Anweisung
<tester_db>
<tester> <name> Thomas <name>?</name> <id>?</id> </name> </tester> </tester_db>
Code:
auf der Ebene von <name> befindest. Das jeweilige Item in "nl.item[i]" entspricht also dem <name>-Knoten, und du suchst mit deinem Code dort jetzt untergeordnete <id>- und <name>-Knoten. Ohne Nachgucken ist es etwas schwierig (weil aus dem Kopf), aber es müsste eine "parentNode"-Eigenschaft geben, die auf den übergeordneten <tester>-Knoten verweist. Benutze den, und dein Code sollte funktionieren. ;)
/tester_db/tester/name
Nebenbei vermisse ich nach der if-Prüfung das begin/end, denn wenn der Name identisch ist, dann sollen sicher alle der nachfolgenden Anweisungen ausgeführt werden, und nicht nur Zitat:
|
Re: suche in xml
ok.. die genau fehler beschreibung heisst..
"Variante des Typs (NULL) konnte nicht in den Typ (String) konvertiert werden." und der Fehler weist auf folgende zeile hin
Delphi-Quellcode:
das ganze sieht jetzt so aus...
if lowercase(nl.item[i].nodeValue) = lowercase(LabeledEdit1.Text) then begin
Delphi-Quellcode:
nl:= xmldoc.documentElement.selectNodes('/movies_db/mov/name');
for i := 0 to nl.length - 1 do begin ListView1.Items.BeginUpdate; ListView1.Clear; if lowercase(nl.item[i].nodeValue) = lowercase(LabeledEdit1.Text) then begin MessageDlg('Eintrag gefunden', mtConfirmation, [mbYes,mbNo], 0); end; ListView1.Items.EndUpdate; end; |
Re: suche in xml
Hast du das Platform SDK auf der Platte? Oder die Hilfedatei, die bei MS-XML dabei war? Dann schau dir mal die Angaben zu nodeValue von
![]() Und, äh, ...
Delphi-Quellcode:
solltest du nicht in der Schleife drin haben.
ListView1.Items.BeginUpdate;
ListView1.Clear; |
Re: suche in xml
so.. nach langem hin und her hab ich jetzt mal dieses hier versucht..
Delphi-Quellcode:
jedoch überschreited jetzt der listenindex max.(5) und ich finde den fehler nicht :(
begin
ListView1.Items.BeginUpdate; ListView1.Clear; nl:= xmldoc.documentElement.selectNodes('mov'); for i := 0 to nl.length - 1 do begin subNode := nl.item[i].selectSingleNode('id'); ListView1.Items.Add; ListView1.Items[i].Caption := subNode.text; with ListView1.Items[i].SubItems do begin subNode := nl.item[i].selectSingleNode('name'); if lowercase(subNode.text) = lowercase(LabeledEdit1.Text) then Add(subNode.text); end; end; ListView1.Items.EndUpdate; end; |
Re: suche in xml
Ich kann dir irgendwie nicht folgen, weil du auch ständig dein XML-Format änderst. Mal <tester_db>, jetzt wieder <mov_db>, dann nur noch <mov> ... :gruebel: :mrgreen:
Dein Problem mit der List-View lässt sich wie folgt lösen:
Delphi-Quellcode:
Spricht irgendwas gegen die Verwendung einer TListItem-Variablen? Ich meine, so viel größer wird sie dein Programm nicht machen. ;)
lvi := ListView1.Items.Add;
lvi.Caption := subNode.Text; lvi.SubItems.(blablabla); |
Re: suche in xml
entschuldige die verwirrung :D
wollte eigendlich nur einfachere beispiele verwenden ;) naja.. funzt ned.. ich lass es.. muss einen anderen weg finden thx für die hilfe.. echt cool die hilfe von dir mathias |
Re: suche in xml
Liste der Anhänge anzeigen (Anzahl: 1)
So schwer ist das aber gar nicht (s. Anhang).
Guck ob dir das irgendwie hilft. Preisfrage: Woher stammt der Name der Funktion, die für die Suche zuständig ist, und wie müsste der richtige Suchbegriff lauten? :mrgreen: |
Re: suche in xml
jo.. das ganze ist gut.. jedoch hab ich jetzt wieder den fehler, dass es mir nur extakte suchen ausgibt :D
daher verwendete ich zu begin contains |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 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