Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Exception mit himXML und Codetabelle ISO 8859-15 (https://www.delphipraxis.net/205921-exception-mit-himxml-und-codetabelle-iso-8859-15-a.html)

knochen 30. Okt 2020 12:13

Exception mit himXML und Codetabelle ISO 8859-15
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallöchen,

ich habe ein Problem beim Einlesen einer XML-Datei mit himXML, das mir bislang immer hervorragende Dienste geleistet hat.
Hier ein wenig Code:

Delphi-Quellcode:
  function XMLTest: String;
  var
    xml: TXMLFile;
    node: TXMLNode;
  begin
    Result := '';

    xml := TXMLFile.Create(nil, 'AMTS.xml', False);

    try
      node := xml.FindNode['Irgendwas'];
      if Assigned(node) then
        Result := node.Text;
    finally
      xml.Free;
    end;
  end;
Die XML-Datei habe ich angehängt. Das ist eine Beispieldatei für eine XML-Datei mit AMTS-Daten (Arneimitteltherapiesicherheit).
Zitat Wikipedia: "Die Codetabelle ISO 8859-15 dient als Zeichensatzvorgabe für amtliche Zwecke wie die aufgedruckten Daten der Elektronischen Gesundheitskarte."

Beim Laden der XML-Datei (also beim Create) erscheint eine Exception: "Im Projekt Test.exe ist eine Exception der Klasse EXMLException mit der Meldung '[EXMLException] TXReader.SetEnc: unknown encoding' aufgetreten."

Die ISO-Encodings, die himXML kennt, gehen von ISO 8859-1 bis ISO 8859-9, wenn ich den Code richtig verstanden habe.

Frage: gibt es eine Möglichkeit, die Datei mit himXML einzulesen oder mus ich mich mit einem weiteren XML-Parser anfreunden?

Vielen Dank im Voraus :-)

Redeemer 31. Okt 2020 11:09

AW: Exception mit himXML und Codetabelle ISO 8859-15
 
Kann man die nicht einfach definieren? In Zeile 721 (oder 723) fügst du der Aufzählung einen neuen Wert hinzu und nach Zeile 1900 oder 1912 definierst du dann dafür den IANA-String und die Windows-Codepage (CP28605). Übrigens kennt Windows auch noch ISO 8859-13, was bei HimXML fehlt. 10, 11 und 14 kennt Windows nicht.

himitsu 31. Okt 2020 13:51

AW: Exception mit himXML und Codetabelle ISO 8859-15
 
Joar, entweder das dort einfügen,
oder alternativ via TEncoding/TFile.GetAllText/TStringStream/TStringList/... die Datei einlesen und als "Text" (Unicode) übergeben.

knochen 2. Nov 2020 12:00

AW: Exception mit himXML und Codetabelle ISO 8859-15
 
Vielen Dank,

ich habe den Vorschlag von Redeemer umgesetzt. Es kompiliert und die TreeDemo funktioniert. Vielen Dank für den Tipp.
Allerdings blicke ich wohl noch nicht ausreichend durch, um selbst Werte auszulesen.

Ich habe es versucht mit
Delphi-Quellcode:
  Result := xml['AMTS:MP\AMTS:P\egk'].Text;
oder
Delphi-Quellcode:
  node := xml.FindNode['AMTS:MP'];
  if Assigned(node) then
  begin
    node := node.FindNode['AMTS:P'];
    if Assigned(node) then
    begin
      Result := node.Text;
    end;
  end;
Kein Erfolg, ...Text ist immer leer. Wo liegt mein Bedienungsfehler?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 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