Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi suche in xml (https://www.delphipraxis.net/42701-suche-xml.html)

mav 22. Mär 2005 18:42


suche in xml
 
hi all

ich durchsuche meine .xml mithilfe von

Delphi-Quellcode:
nl:= xmldoc.selectNodes('/*/*[contains(name,"'+LabeledEdit1.Text+'")]');
jedoch ist es nun fascht logisch, das ein Eintrag in der .xml welcher z.B.: Thomas ist nich durch thomas gefunden werden kann.. kann mer hier jemand helfen

mr47 22. Mär 2005 19:04

Re: suche in xml
 
Du kannst mit lowercase alle Buchstaben in kleinbuchstaben umwandeln. (oder anders mit upperCase alles in groß)

Delphi-Quellcode:
lowercase(Suchbegriff)=lowerCase(Xml-eintrag)
mfg


edit: Delphi-Referenz durchsuchenlowercase :wink:

mav 22. Mär 2005 19:11

Re: suche in xml
 
delphi sagt mir aber, dass uppercase und lowercase nicht xmldoc komp. sind

habe ich auch schon probiert

mr47 22. Mär 2005 20:09

Re: suche in xml
 
Wie nicht kompatibel? Du kannst ja den Eintrag aus der DB auslesen überprüfen und verarbeiten. Also, dass du z.B. den Eintrag in ne Varibale kopierst (oder geht dat net?) und dann mit Delphi-Referenz durchsuchenupperCase vergleichst???


mfg

mav 22. Mär 2005 21:51

Re: suche in xml
 
habe das ganze jetzt mal so versucht

Delphi-Quellcode:
nl:= xmldoc.selectNodes('/*/*[contains(name,"'+LabeledEdit1.Text+'")]');

for i := 0 to nl.length - 1 do begin
str1 := nl.item[i].text;
str2 := LabeledEdit1.Text;
if lowercase(str1) = lowercase(str2) then
jedoch gibt er mir immer noch nichts heraus, wenn ich "thomas" klein schreibe

[edit]
weitere infos zugunsten von bttb

Delphi-Quellcode:
xmlDoc: IXMLDOMDocument2
statt /*/* könnte ich auch /<datenbank>/<eintraege> schreiben

bttb930 22. Mär 2005 22:05

Re: suche in xml
 
was machst du da überhaupt? was für ein typ ist xmldoc? Ich kenne den SelectNodes-Befehl gar nicht (IXMLDocument und TXMLDocument haben den nicht). Und was soll der merkwürdige Kram im String? (mit den /*/* usw?)

Ohne diese Infos wird Dir keiner helfen können.

MathiasSimmack 22. Mär 2005 23:19

Re: suche in xml
 
Ich möchte zwar nicht unhöflich klingen, aber wenn du mit den Infos nichts anfangen kannst, dann häng dich einfach nicht rein. :roll: Oder mach dich vorher zum Thema XML, XPath, usw. schlau, wenn du gern helfen möchtest.

Ich sehe da nichts Ungewöhnliches. Ich habe auch nur keine Lösung, weil XML nun mal zwischen Groß- und Kleinschreibung unterscheidet, und weil man daher (IMHO und jetzt auf die Schnelle behauptet) mit Bordmitteln nicht weiterkommt. Falls mir zufällig im XML-SDK eine Lösung begegnet, ob man auch unabhängig von der Schreibweise nach Knoten suchen kann, sage ich Bescheid.

czapie 22. Mär 2005 23:22

Re: suche in xml
 
Kannst du sonst deine Suche nicht zweimal laufen lassen, einmal mit klein und einmal mit großem Anfang?
Oder ist es auch wahrscheinlich, das ein Buchstabe mitten im Wort groß geschrieben ist?

Czapie.

MathiasSimmack 23. Mär 2005 09:45

Re: suche in xml
 
Es geht nicht um die Frage der Wahrscheinlichkeit, sondern es geht um die Eingabe des Anwenders. Ich kann entweder Thomas eintippen, oder aber thomas. Ich kann auch aus Versehen auf die Shift-Taste kommen, so dass im Eingabefeld dann ThoMAs steht. Oder komplett in Großbuchstaben.

@mav: Sag mal, suchst du nach Knotennamen? Ich wundere mich, weil sich "name"
Code:
/*/*[contains([b]name[/b],"'+LabeledEdit1.Text+'")]
doch nicht auf den Inhalt sondern auf den Namen des Knotens selbst bezieht. Aber dann müsste deine XML-Datei ja so aussehen:
XML-Code:
<datenbank>
  <Thomas>
   
  </Thomas>
</datenbank>
Richtig? Wenn möglich, dann überdenke diesen Aufbau noch einmal. Du machst dir das Leben damit noch schwerer. Wenn du in deiner Datei mehrere Leute hast, die Thomas heißen, dann musst du sowieso weitere Daten heranziehen, um einen von ihnen zweifelsfrei erkennen zu können. Sonst änderst du den falschen Knoten.

Ich weiß nicht, was du programmierst. Vermutlich ein Adressbuch. Aber da würde ich einen anderen, allgemeineren Aufbau der Datei benutzen, schon allein um die Suche zu erleichtern. Nehmen wir an, du hast folgenden Aufbau:
XML-Code:
<datenbank>
  <person>
    <name>Thomas Maier</name>
  </person>
  <person>
    <name>Thomas Müller</name>
  </person>
</datenbank>
und du willst jetzt in einer Art Suchfunktion alle Namen anzeigen lassen, in denen Thomas vorkommt. Dann kannst du erst mal mit
Code:
/datenbank/person/name
alle Knoten finden, in denen auch ein Name drin steht. Und in einer Schleife prüfst du dann den Inhalt des Knotens (node.text oder node.value; eins von beiden jedenfalls :oops:). Und hier lassen sich dann auch Delphi-Referenz durchsuchenlowercase oder Delphi-Referenz durchsuchenuppercase und/oder Delphi-Referenz durchsuchenpos verwenden. Und wenn der Name Thomas dann gefunden wurde, gibst du den Parent-Knoten an eine Funktion deines Programms weiter, die für die Auflistung des Namens und der Daten sorgt, o.ä.

Das ist IMHO einfacher, als ein XML-Format zu nutzen, bei dem man die Namen von Personen als Knotennamen benutzt.

mav 23. Mär 2005 14:33

Re: suche in xml
 
also meine .xml ist so aufgebaut

Delphi-Quellcode:
<tester_db><tester><name>Thomas</name></tester></tester_db>


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 Uhr.
Seite 1 von 3  1 23      

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