![]() |
xml -> suche
hi all..
ich hab wiedermal so ein xml problem :D ich möchte gerne in einer xml-datei suchen lassen.. und diese in einer listview anzeigen lassen.. ich habe im forum schon geschnöbert.. aber nichts gefunden, was mein problem lösen könnte.. soweit bin ich bereits
Delphi-Quellcode:
jedoch habe ich nun keine ahnung wie ich diese in die listview adde..
procedure TSearchForm.Button1Click(Sender: TObject);
var suche: IXMLDOMNode; begin ListView1.Items.BeginUpdate; ListView1.Clear; xmldoc.load(MainForm.fAppPath + DATABASE_FNAME); suche := xmldoc.selectSingleNode('//mov[@name="'+ LabeledEdit1.Text +'"]'); end; |
Re: xml -> suche
Hi,
die Frage bezieht sich eher auf die VCL-Angelegenheit, oder? Wenn es dir um XML geht, ist das schon ein guter Ansatz für den Rest lege ich dir jetzt einfach mal mein [dp="XML Tutorial"]Tutorial zu XML[/dp] an's Herz. Wegen ListView:
Delphi-Quellcode:
So sollte es funktionieren (ist aber ungetestet).
var
aListItem: TListItem; // Variable für das neue ListView-Item begin aListItem := ListView1.Items.Add; // Item erstellen und hinzufügen aListItem.Caption := 'Titel'; // Titel des Eintrages festlegen aListItem.SubItems.Add('Untertitel'); // einen Untertitel hinzufügen end; Chris |
Re: xml -> suche
dein tut kenn ich bereits..
jedoch funzt es nicht :( eigendlich dachte ich mir etwas mit
Delphi-Quellcode:
jedoch finde ich keine passende befehle
i := 0 to xxxx.xxxx -1 do begin
ListView1.Items.Add......... end; |
Re: xml -> suche
Hi,
Zitat:
Zitat:
Delphi-Quellcode:
Chris
var
aItem: TListItem; i: integer; begin for i:=0 to SomeInteger-1 do begin aListItem := SomeListView.Items.Add; aListItem.Caption := IntToStr(i); end; end; |
Re: xml -> suche
das problem liegt daring.. die suche (also
Delphi-Quellcode:
zu counten.. damit er weiss wieviele items er adden muss
suche := xmldoc.selectSingleNode('//mov[@name="'+ LabeledEdit1.Text +'"]');
|
Re: xml -> suche
Hi,
wenn suche vom Typ IXMLDOMNodeList ist, dann kannst du die Anzahl der gefundenen Nodes mit der Eigenschaft Length herausfinden. Wie gesagt: das steht alles in dem Tutorial drin, auch wenn es nicht ganz so toll ist, wie es sein sollte. ;) Chris |
Re: xml -> suche
aber mit der nodelist kann ich nicht suchen..
|
Re: xml -> suche
Nein, denn die IXMLNodeList ist bereits das Ergebnis einer XPath-Suche. :roll: Hast du schon mal folgendes probiert:
Delphi-Quellcode:
Sollte es in deiner Datei tatsächlich mehrere <mov>-Knoten mit dem gleichen "name"-Attribut geben, dann siehst du die Anzahl.
nl := xmldoc.selectNodes('//mov[@name="'+ LabeledEdit1.Text +'"]');
ShowMessage(nl.length); |
Re: xml -> suche
cool.. thx.. funzt jetzt
ich möchte jetzt gleich noch fragen, wie suche ich ungefähr :D also, wenn ein eintrag vorhanden ist mit 'Borland Delphi 7' und dass die suche auch bei der eingabe von 'delphi' erfolgreich ist... |
Re: xml -> suche
Ich bin nicht sicher, aber ich glaube, das funktioniert nicht. Aber wie gesagt, ich bin nicht sicher. Und deshalb würde ich dir vorschlagen, dass du dich mal selbst mit dem Thema
![]() Wenn du das MS-XML-SDK installiert hast, bzw. das PSDK (da steht´s auch drin), dann kannst du das sogar in aller Ruhe offline lesen und ausprobieren. |
Re: xml -> suche
hello
danke für den tip.. die idee ist gut.. jedoch seh ich hier ein problem :) die lösung wäre..
Delphi-Quellcode:
jedoch bezieht sich diese funktion auf dei elemente..
//*[contains(name(),"'+ LabeledEdit1.Text +'")]
meine .xml ist aber so aufgebaut <mov> <id>1</id> <name>Alexandra</name> </mov> |
Re: xml -> suche
so.. konnte dank XPath das problem wirklich so lösen..
Code:
jedoch habe ich jetzt ein weiteres problem..
nl := xmldoc.selectNodes('/*/*[contains(name,"'+LabeledEdit1.Text+'")]');
in der .xml sind die
XML-Code:
wenn ich nun bei der Suche den name klein schreibe findet er nichts..
<name>Jackie</name>
wie könnte ich das lösen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 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