Entwickler-Ecke
Dateizugriff - XML Datei öffnen und Tags auslesen
Kin15 - Di 12.06.07 22:47
Titel: XML Datei öffnen und Tags auslesen
Hallo zusammen :D
Ich habe folgendes Problem: Ich möchte gern aus einer XML Datei verschiedene Informationen auslesen. Doch nach längeren Suchen und Versuchen klappt es bei mir immer noch nicht :(
Das muss ungefähr so aussehen:
Ich frage ein Wert aus einer XML Datei, z.B. "Name" mit Button1.Click. Delphi muss einen Wert, das zwischen <name> Unbekannt </name> steht, aus diesen XML Document auslesen und mir in Label1.Caption anzeigen.
Das hört sich einfach an, aber trotzdem schaffe ich es nicht :?
Kann mir jemand dabei helfen?
Anhang dieses Beispiels:
XML-Daten
1: 2: 3: 4: 5: 6: 7:
| <? xml version="1.0" encoding="utf-8" ?> <- <info err="0" op="thing"> <typefull>info_thing</typefull> <description>Keine Angaben</description> <thingtypeid>1</thingtypeid> <name>Name</name> </info> |
Also, wie kann ich jetzt so was machen?
Delphi-Quelltext
1: 2:
| Label1.Caption:= ((thingtypeid)); Label2.Caption:= ((description)) |
Freue mich auf ihre Antworten :D
Moderiert von
Christian S.: I- durch XML-Tags ersetzt
Moderiert von
Christian S.: B- durch Delphi-Tags ersetzt
Coder - Mi 13.06.07 01:04
XML-Daten
1:
| <typefull>info_thing</typefull> |
Sowas kannst du mit SimpleXML auslesen.
Um aber hier die Attribute auszulesen brauchst du eine komplexere Komponente.
XML-Daten
1:
| <info err="0" op="thing"> |
z.B. Open XML. Ist jedoch schwerer als SimpleXML
Beide sind kostenlos.
Infos/Anleitungen findest du im Forum/Google.
UGrohne - Mi 13.06.07 07:33
Erstens hat Dein XML-Text Fehler: So sollte er aussehen (ohne das <- und das Leerzeichen nach dem Fragezeichen):
XML-Daten
1: 2: 3: 4: 5: 6: 7:
| <?xml version="1.0" encoding="utf-8"?> <info err="0" op="thing"> <typefull>info_thing</typefull> <description>Keine Angaben</description> <thingtypeid>1</thingtypeid> <name>Name</name> </info> |
Dann: Wieso nicht XmlDocument verwenden, das einen MSXML-Parser verwendet und alles bietet, was man braucht: Einfach XmlIntf und XmlDoc in die uses einbinden und mit folgendem Code laden und abfragen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); var xmlDoc: IXmlDocument; begin xmlDoc := LoadXMLData(Memo1.Text); xmlDoc := LoadXmlDocument(filename); ShowMessage(xmlDoc.DocumentElement.ChildNodes['thingtypeid'].NodeValue); end; |
Brauchst keine Zusatzkomponenten wie OpenXml oder SimpleXml. Und Du kannst über Attributes auch die Attribute eines Elements auslesen.
KinWeb - Mo 15.10.07 01:02
Danke, Coder und UGrohne! :D
xmldoc.DocumentElement.ChildNodes['roomname'].NodeValue - das war glaube ich genau das, was ich brauche, aber immer noch habe ich ein Problem damit...
Dieses Mal ist es kein Parsing, sondern Encoding... Meine Tags bestehen fast nur aus kyrillischen Buchstaben - so z.B roomname = "Главная Страница, Раздел фотографии, Личные фотографии"(Hauptseite, Fotos, Eigene Fotos).
Wenn ich also diesen Attribut "roomname" in Form1.Memo1.Lines.Add(xmldoc.DocumentElement.ChildNodes['roomname'].NodeValue) stehen habe, dann sieht der Text so aus: "?‹?? ???????????‡???Æ????, ???‹???É?€????".
Utf8encode() hat auch nicht geholfen... Ich glaube ich bräuchte eine Funktion für encoding von windows-1251... Oder so etwas wie Utf8_2_win1251... Keine Ahnung also, ich habe schon viele Seiten im Google angeschaut, sowie mehrere Units runtergeladet, aber bis immer keinen Erfolg gehabt :?
Wenn jemand sich mit diesem Problem schon beschäftigt hat, bitte helft mir weiter :(
Coder - Mo 15.10.07 14:17
Welche Komponente benutzt du?
Bei der OpenXML Parser Komponente kannst du das Encoding einstellen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!