AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Nodes mit Leerzeichen und Sonderzeichen auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Nodes mit Leerzeichen und Sonderzeichen auslesen

Ein Thema von Chillaa · begonnen am 14. Okt 2004 · letzter Beitrag vom 21. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
Chillaa

Registriert seit: 12. Okt 2004
Ort: Schweiz
23 Beiträge
 
#1

Nodes mit Leerzeichen und Sonderzeichen auslesen

  Alt 14. Okt 2004, 12:26
XML-Code:
<?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>
Wie kann ich jetzt auf die AutoFarbe zugreifen? Irgendwie weiss ich nicht, wie ich mit den Leerzeichen und SOnderzeichen umzugehen habe.

Vielen Dank schonmal für eine Antwort!

Grüsse

Stef
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Nodes mit Leerzeichen und Sonderzeichen auslesen

  Alt 14. Okt 2004, 12:31
Es fehlt die Angabe der Codierung im Header.
z.B. <?xml version="1.0" encoding="UTF-8" ?> für UTF-8 Wenn diese angegeben ist sollte der Parser/DOM alles transparent für dich erledigen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Chillaa

Registriert seit: 12. Okt 2004
Ort: Schweiz
23 Beiträge
 
#3

Re: Nodes mit Leerzeichen und Sonderzeichen auslesen

  Alt 14. Okt 2004, 12:52
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:
<?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>
Doch eigentlich möchte ich die XML nicht verändern müssen.

Vielen Dank nochmals.

Grüsse

Stef
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Nodes mit Leerzeichen und Sonderzeichen auslesen

  Alt 14. Okt 2004, 12:57
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]>
  Mit Zitat antworten Zitat
Chillaa

Registriert seit: 12. Okt 2004
Ort: Schweiz
23 Beiträge
 
#5

Re: Nodes mit Leerzeichen und Sonderzeichen auslesen

  Alt 14. Okt 2004, 13:10
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

<auto index="1"> ändere, muss ich dann via

    AutoList:=XMLDoc.DocumentElement.SelectNodes(AutoListCount/Auto'); oder via
    AutoList:=XMLDoc.DocumentElement.SelectNodes(AutoListCount/Auto Index'); oder via
    AutoList:=XMLDoc.DocumentElement.SelectNodes(AutoListCount/Auto Index="0"'); darauf zugreifen? (Letzteres wohl kaum, da er stonst ja nicht zum nächsten Auto springen würde.

Mit
<auto index="1"> hats auch nicht geklappt...
  Mit Zitat antworten Zitat
Chillaa

Registriert seit: 12. Okt 2004
Ort: Schweiz
23 Beiträge
 
#6

Re: Nodes mit Leerzeichen und Sonderzeichen auslesen

  Alt 14. Okt 2004, 13:28
Ich korrigiere mich grad selber Das mit der Auswahl hat geklappt, jetzt konnte ich das XML-File:

XML-Code:
<?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>
problemlos einlesen.

Nun lade ich die Datei aus dem Internet und dort steht in der ersten Zeile bloss:

<?xml version="1.0"?> Kann ich irgendwie diesem File den Wert encoding="ISO-8859-1" zuweisen?

Vielen Dank schonmal

Grüsse

Stef
  Mit Zitat antworten Zitat
Chillaa

Registriert seit: 12. Okt 2004
Ort: Schweiz
23 Beiträge
 
#7

Re: Nodes mit Leerzeichen und Sonderzeichen auslesen

  Alt 15. Okt 2004, 13:23
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
  Mit Zitat antworten Zitat
Chillaa

Registriert seit: 12. Okt 2004
Ort: Schweiz
23 Beiträge
 
#8

Re: Nodes mit Leerzeichen und Sonderzeichen auslesen

  Alt 18. Okt 2004, 10:09
Zitat von Chillaa:
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
Kann mir da echt niemand weiterhelfen?
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#9

Re: Nodes mit Leerzeichen und Sonderzeichen auslesen

  Alt 18. Okt 2004, 10:31
Zitat von Chillaa:
<auto index="1"> ändere, muss ich dann via

[...]

darauf zugreifen?
Also Knotennamen enthalten grundsätzlich keine Leerzeichen. Das Index ist ein Attribut. Du kannst jetzt 3 verschiedene XPath-Pfade nehmen:

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...
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Chillaa

Registriert seit: 12. Okt 2004
Ort: Schweiz
23 Beiträge
 
#10

Re: Nodes mit Leerzeichen und Sonderzeichen auslesen

  Alt 19. Okt 2004, 11:12
Zitat von fiasko:
Für dein Sonderzeichenproblem: was ist denn die genaue Fehlermeldung? Vielleicht noch ein Code-Schnipsel von wo er abschmiert würde helfen...
Vielen herzlichen Dank für deine Antwort, hat mir echt viel gebracht. Jetzt dürfte sich das Problem für mcih geklärt haben.

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 version="1.0"?> also nix von "encoding".
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:
   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;
Wenn ich bei der Head-Zeile der XML-Datei z.B. <?xml version="1.0" encoding="ISO-8859-1" ?> 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.
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 Uhr.
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