![]() |
Nodes mit Leerzeichen und Sonderzeichen auslesen
XML-Code:
Wie kann ich jetzt auf die AutoFarbe zugreifen? Irgendwie weiss ich nicht, wie ich mit den Leerzeichen und SOnderzeichen umzugehen habe.
<?xml version="1.0"?>
<AutoData> <AutoList Count=2> <Auto Index=0> <AutoFarbe>blau</AutoFarbe> <AutoNr>11111</AutoNr> (...) </Auto> <Auto Index=1> <AutoFarbe>grün</AutoFarbe> <AutoNr>22222</AutoNr> (...) </Auto> </AutoList> </AutoData> Vielen Dank schonmal für eine Antwort! Grüsse Stef |
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Es fehlt die Angabe der Codierung im Header.
z.B.
XML-Code:
Wenn diese angegeben ist sollte der Parser/DOM alles transparent für dich erledigen.
<?xml version="1.0" encoding="UTF-8" ?> für UTF-8
|
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Erstmal herzlichen Dank für die schnelle Hilfe!
Die XML Datei lade ich aus dem Netz und dort ist leider nichts angegeben was das encoding betrifft. Mit UTF-8 hat es nicht geklappt, mit ISO-8859-1 gings dann, allerdings nur, wenn ich die Leerz- und die Sonderzeichen bei den Nodes gelöscht habe. Sprich:
XML-Code:
Doch eigentlich möchte ich die XML nicht verändern müssen.
<?xml version="1.0" encoding="ISO-8859-1"?>
<AutoData> <AutoListCount> <AutoIndex> <AutoFarbe>blau</AutoFarbe> <AutoNr>11111</AutoNr> (...) </Auto> <AutoIndex> <AutoFarbe>grün</AutoFarbe> <AutoNr>22222</AutoNr> (...) </Auto> </AutoList> </AutoData> Vielen Dank nochmals. Grüsse Stef |
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Hi,
das ist eigentlich keine Sache des Encodings. :? Versuche mal die Werte der Attribute mit " zum umsetzen (komisches Wort):
Code:
<auto index=[color=#ff0000]"[/color]1[color=#ff0000]"[/color]>
|
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Ich bin ja echt überwältigt wie schnell hier Antworten kommen!
So wie ich das sehe, hat das Problem mit den Sonderzeichen in den Werten mit dem Encoding zu tun (also bei meinem Bsp, das "Grün"). Wenn ich das in
Delphi-Quellcode:
ändere, muss ich dann via
<auto index="1">
Delphi-Quellcode:
oder via
AutoList:=XMLDoc.DocumentElement.SelectNodes(AutoListCount/Auto');
Delphi-Quellcode:
oder via
AutoList:=XMLDoc.DocumentElement.SelectNodes(AutoListCount/Auto Index');
Delphi-Quellcode:
darauf zugreifen? (Letzteres wohl kaum, da er stonst ja nicht zum nächsten Auto springen würde.
AutoList:=XMLDoc.DocumentElement.SelectNodes(AutoListCount/Auto Index="0"');
Mit
Delphi-Quellcode:
hats auch nicht geklappt... :(
<auto index="1">
|
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Ich korrigiere mich grad selber ;) Das mit der Auswahl hat geklappt, jetzt konnte ich das XML-File:
XML-Code:
problemlos einlesen.
<?xml version="1.0" encoding="ISO-8859-1"?>
<AutoData> <AutoList Count="2"> <Auto Index="0"> <AutoFarbe>blau</AutoFarbe> <AutoNr>11111</AutoNr> <AutoMarke>Fiat</AutoMarke> </Auto> <Auto Index="1"> <AutoFarbe>grün</AutoFarbe> <AutoNr>22222</AutoNr> <AutoMarke>Seat</AutoMarke> </Auto> </AutoList> </AutoData> Nun lade ich die Datei aus dem Internet und dort steht in der ersten Zeile bloss:
XML-Code:
Kann ich irgendwie diesem File den Wert encoding="ISO-8859-1" zuweisen?
<?xml version="1.0"?>
Vielen Dank schonmal :) Grüsse Stef |
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Hm, scheint als wäre es ein verflixter Fall.
Ich habe in der XML Datei ein Zeichen "ę". Wenn ich ein Iso Encoding wähle (ISO-8559-1 bis ISO-8559-15) geht das mit dem "XML-Datei einlesen" ohne Fehlermeldung. Wenn ich allerdings einen Nodewert mit dem Sonderzeichen "ę" einer Variable zuweise, schmiert das Programm ab. Kann mir da jemand helfen? Wie kann ich auf einen ę-Namen zugreifen? Mit welchem encoding? Danke schonmal im Voruas! Grüsse Stef |
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Zitat:
:| |
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Zitat:
Code:
--
/AutoData/AutoList/Auto # eine Menge aller Autos (also 2 Elemente in diesem Fall)
/AutoData/AutoList/Auto[@index='0'] # eine (hier einelementige) Menge mit den Auto welches das Attribut index mit dem Wert 0 besitzen /AutoData/AutoList/Auto/@index # eine Menge von Werten der Index Attribute Für dein Sonderzeichenproblem: was ist denn die genaue Fehlermeldung? Vielleicht noch ein Code-Schnipsel von wo er abschmiert würde helfen... |
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Zitat:
Einzig das Problem mit dem Sonderzeichen besteht noch :( Details dazu: Ich habe aus dem Internet eine XML-Datei mit dem Namen "Ziętek". Bei der XML-Head-Zeile steht bloss
XML-Code:
also nix von "encoding".
<?xml version="1.0"?>
Ich lese diese Datei ein (parse) und gebe sie via TListView aus. Wenn ich nichts bei encoding reinschreibe, bekomme ich eine Fehlermeldung nach dem Parsen. Im Programm an dieser Stelle:
Delphi-Quellcode:
Wenn ich bei der Head-Zeile der XML-Datei z.B.
if XmlDoc.parseError.errorCode <> 0 then begin
MessageDlg('Die XML Datei ist nicht korrekt!' + #13#10 +'Das Programm wird nun beenden!', mtError, [MbOk], 0); Application.Terminate; end;
XML-Code:
einsetze, dann gibts keine Fehlermeldung und die Datei wird richtig geparst und im ListView aufgeführt. Allerdings wird der Name "Ziętek" in "Zietek" umgewandelt.
<?xml version="1.0" encoding="ISO-8859-1" ?>
Ich wollte, dass bei Doppelklick auf den Namen ein Fenster geöffnet wird (listview.selected.Caption, wobei Caption := Name). Dann schmiert das Programm allerdings ab, weil ja in der XML-Datei kein "Zietek" sondern nur ein "Ziętek" existiert. Nun meine Fragen: 1. Was muss ich bei Encoding schreiben, damit das ę richtig übernommen wird? 2. Wenn ich die XML-Datei direkt aus dem Internet parsen will, gibts ja die Fehlermeldung, weil kein encoding-typ definiert ist. Kann ich diesen Typ irgendwie via Delphi definieren? Hoffe, dass mein Problem mit den Sonderzeichen nun verständlicher wurde. Vielen Dank für eine Antwort :) Grüsse Stef |
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Noch immer unklar formuliert oder weiss niemand eine Antwort?
Grüsse Stef |
Re: Nodes mit Leerzeichen und Sonderzeichen auslesen
Also (wenn ich's jetzt so im Halbschlaf richtig verstanden hab...) es ist so eine Art von escape()/unescape()/encodeURI()decodeURI(), über welche die Daten codiert werden - vor allem die <, >, " und % müssen ja weg.
Die entsprechenden Zeichen werden in ein %, gefollgt von der 2-stelligen Hexadezimaldarstellung umgewandelt. " " = %20 - = %2D ? = %3F > = %3E < = %3C ä = %E4 ö = %F6 ... [add] siehe ![]() [/add] Hab zwar kaum Ahnung von XML, aber mein Trillian erstezt in seinen XML, alles, (vermutlich) was kein Buchstabe, oder keine Zahl ist ... auch die Leerzeichen werden geändert. In der XML von der DP-ShoutBox ist das nicht so extrem, dort sinc die z.B. Leerzeichen auch wirklich noch leerzeichen. Von den Werten her ist ja egall, ob nun "zuviel" codiert wird, die Datei wird dann halt nur größer (da ja aus einem Zeichen drei werden) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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