Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Suche in einer XML datei ? (https://www.delphipraxis.net/31594-suche-einer-xml-datei.html)

Cyberbob_at_tot 11. Okt 2004 15:00


Suche in einer XML datei ?
 
Hallo zusammen,
ich habe nur eben eine Frage, wie kann ich in einer XML Datei zur Laufzeit eine Suche Starten.
Die suche soll eigentich so aussehen wie in Winamp. Man gibt also einen Begriff ein und es werden alle Ergebnisse die den Begriff beinhalten in einer Liste angezeigt und durch anklicken dann komplett angezeigt.
Hat jemand sowas schonmal gemacht?

MFG

Cyberbob

CalganX 11. Okt 2004 15:06

Re: Suche in einer XML datei ?
 
Hi,
Stichwort Bei Google suchenXPath.
Wie man die verwendet kommt darauf an, welche Schnittstelle du verwendest. Beim direkten Zugriff über XML würdest du das so verwenden:
Delphi-Quellcode:
xmlDoc.selectSingleNode('/XPath/zur/Node');
Ich habe das mal am Beispiel von Ordnern auf einem Unixsystem erklärt. Du navigierst sozusagen durch die verschiedenen Ebenen. So kannst du auch suchen. Angenommen es ist egal in welcher Ebene die zu suchende Node ist und das Attribut title gesucht werden soll, so sähe das zum Beispiel so aus:
Delphi-Quellcode:
xmlDoc.selectSingleNode('//entry[@title="Zu suchender Text"]');
Ich vermute mal, dass man auch irgendwie Wildcards verwenden kann, weiß aber nicht genau wie. Dazu empfehle ich dir wieder den [google:b825983a39="XPATH]Google-Link[/google:b825983a39].

Chris

Cyberbob_at_tot 11. Okt 2004 15:10

Re: Suche in einer XML datei ?
 
Das Hilft mir schon weiter! Mal sehen was ich draus machen kann.

Vielen danke für die schnelle Hilfe!

Cyberbob_at_tot 12. Okt 2004 10:15

Re: Suche in einer XML datei ?
 
So habe das mal versucht, hänge nun aber daran das Ergebniss in eine Liste zu übertragen.

Delphi-Quellcode:
procedure TSchnellForm.Button1Click(Sender: TObject);
Var suche:IXMLDOMNode;
x:Integer;
begin
suche:=xmldoc.selectSingleNode('//Mitarbeiter[@name="'+ Edit1.Text +'"]');
//ergebniss in TListview übernehmen
end;

end.
Ich will damit durch alle Notes suchen, ob ein Text vorhanden ist.
Und alle Ergenisse, können ja auch mehrer sein, in die Liste übernehmen!
Was meint ihr dazu ?
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<schumacher>
   <mitarbeiter>
   <name>Test</name>
   <vorname>test1</vorname>
   <sonstigenamen>test2</sonstigenamen>
   <telefonnummer>test3</telefonnummer>
   <fax>test4</fax>
   </mitarbeiter>
   <mitarbeiter>
   <name>Test100</name>
   <vorname>test11</vorname>
   <sonstigenamen>test22</sonstigenamen>
   <telefonnummer>test33</telefonnummer>
   <fax>test44</fax>
   </mitarbeiter>
</schumacher>
MFG

Cyberbob

MathiasSimmack 12. Okt 2004 10:19

Re: Suche in einer XML datei ?
 
Zitat:

Zitat von Cyberbob_at_tot
Ich will damit durch alle Notes suchen, ob ein Text vorhanden ist.
Und alle Ergenisse, können ja auch mehrer sein, in die Liste übernehmen!

Dann nimm "selectNodes", wenn es mehrere sein könnten. Das Prinzip ist das gleiche, nur ist das Rückgabeergebnis kein IXMLDomNode sondern eine IXMLDomNodeList.

Cyberbob_at_tot 12. Okt 2004 10:28

Re: Suche in einer XML datei ?
 
Jo danke ist mir entfallen!

Noch ne Frage zum Suchen
Delphi-Quellcode:
suche:=xmldoc.selectSingleNode('//Mitarbeiter[@name="'+ Edit1.Text +'"]');
sucht er dabei nur den genauen Text oder auch alle Elemente die den Text enthalten ?

oder würde das auch so gehen ?
Delphi-Quellcode:
suche:=xmldoc.selectSingleNode('//Mitarbeiter[@name="*'+ Edit1.Text +'*"]');

MathiasSimmack 12. Okt 2004 14:22

Re: Suche in einer XML datei ?
 
Zitat:

Zitat von Cyberbob_at_tot
Noch ne Frage zum Suchen
Delphi-Quellcode:
suche:=xmldoc.selectSingleNode('//Mitarbeiter[@name="'+ Edit1.Text +'"]');
sucht er dabei nur den genauen Text oder auch alle Elemente die den Text enthalten ?

In dem Fall: Ja, so wie´s im Editfeld steht, muss es vorhanden sein.

Zitat:

oder würde das auch so gehen ?
Delphi-Quellcode:
suche:=xmldoc.selectSingleNode('//Mitarbeiter[@name="*'+ Edit1.Text +'*"]');

Einfach mal ausprobieren. Der PC geht schon nicht kaputt wg. so was. ;)

CalganX 12. Okt 2004 15:38

Re: Suche in einer XML datei ?
 
Hi,
zusätzlich musst du beim Suchen von Nodes das @ herausnehmen. Das zeigt nämlich ein Attribut an. ;)

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 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