Autor Beitrag
Kin15
Hält's aus hier
Beiträge: 10

Windows XP
Delphi 2005 Prof.
BeitragVerfasst: Di 12.06.07 22:47 
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:
ausblenden 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?
ausblenden Delphi-Quelltext
1:
2:
Label1.Caption:= ((thingtypeid));
Label2.Caption:= ((description))



Freue mich auf ihre Antworten :D

Moderiert von user profile iconChristian S.: I- durch XML-Tags ersetzt
Moderiert von user profile iconChristian S.: B- durch Delphi-Tags ersetzt
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Mi 13.06.07 01:04 
ausblenden XML-Daten
1:
<typefull>info_thing</typefull>					

Sowas kannst du mit SimpleXML auslesen.

Um aber hier die Attribute auszulesen brauchst du eine komplexere Komponente.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 13.06.07 07:33 
Erstens hat Dein XML-Text Fehler: So sollte er aussehen (ohne das <- und das Leerzeichen nach dem Fragezeichen):
ausblenden 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
var xmlDoc: IXmlDocument;
begin
  xmlDoc := LoadXMLData(Memo1.Text);
  //ODER
  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
Hält's aus hier
Beiträge: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Mo 15.10.07 14:17 
Welche Komponente benutzt du?

Bei der OpenXML Parser Komponente kannst du das Encoding einstellen.