![]() |
suche in xml
hi all
ich durchsuche meine .xml mithilfe von
Delphi-Quellcode:
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
nl:= xmldoc.selectNodes('/*/*[contains(name,"'+LabeledEdit1.Text+'")]');
|
Re: suche in xml
Du kannst mit lowercase alle Buchstaben in kleinbuchstaben umwandeln. (oder anders mit upperCase alles in groß)
Delphi-Quellcode:
mfg
lowercase(Suchbegriff)=lowerCase(Xml-eintrag)
edit: ![]() |
Re: suche in xml
delphi sagt mir aber, dass uppercase und lowercase nicht xmldoc komp. sind
habe ich auch schon probiert |
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
![]() mfg |
Re: suche in xml
habe das ganze jetzt mal so versucht
Delphi-Quellcode:
jedoch gibt er mir immer noch nichts heraus, wenn ich "thomas" klein schreibe
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 [edit] weitere infos zugunsten von bttb
Delphi-Quellcode:
statt /*/* könnte ich auch /<datenbank>/<eintraege> schreiben
xmlDoc: IXMLDOMDocument2
|
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. |
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. |
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. |
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:
doch nicht auf den Inhalt sondern auf den Namen des Knotens selbst bezieht. Aber dann müsste deine XML-Datei ja so aussehen:
/*/*[contains([b]name[/b],"'+LabeledEdit1.Text+'")]
XML-Code:
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.
<datenbank>
<Thomas> </Thomas> </datenbank> 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:
und du willst jetzt in einer Art Suchfunktion alle Namen anzeigen lassen, in denen Thomas vorkommt. Dann kannst du erst mal mit
<datenbank>
<person> <name>Thomas Maier</name> </person> <person> <name>Thomas Müller</name> </person> </datenbank>
Code:
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
/datenbank/person/name
![]() ![]() ![]() Das ist IMHO einfacher, als ein XML-Format zu nutzen, bei dem man die Namen von Personen als Knotennamen benutzt. |
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 05:48 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