![]() |
XML aus einem binär Stream fischen
Hallo, ich Doktor gerade an Binär-Dateien rum wo auch XML enthalten ist.
Ich finde den Anfang vom XML und das Ende, hab das ganze nun in einem Array of Bytes. So weit so gut, nur hab ich jetzt sehr viele Fragezeichen im Kopf wie ich denn damit umzugehen habe. Es soll nur gelesen werden, viel eher, es sollen mir alle Knoten und Werte irgendwie dargestellt werden. Mir fällt nur ein das ich das Array in ein File schreibe um es anschliessend mit einer XML Unit verarbeite, aber das alles im Speicher auszuführen wäre mir da lieber. Hat dazu jemand einen Rat? Oder existiert eine XML Variante der ich ein Datei Offset + Länge mitteilen kann um an die Daten zu gelangen? |
AW: XML aus einem binär Stream fischen
Welches XML Framework verwendest du denn? Es gibt sicherlich Möglichkeiten das Dokument direkt aus einem Stream/dem Speicher zu parsen.
|
AW: XML aus einem binär Stream fischen
Bis jetzt noch gar keins, also ich bin mehr als offen für alle Varianten.
Momentan suche ich im Stream nach
Delphi-Quellcode:
um den Anfang zu ermitteln und wühle dann weiter.
<?xml version="1.
|
AW: XML aus einem binär Stream fischen
Hallo,
![]() hier steht weiter unten was zu LoadFromStream. Im Stream muss aber ein gültiges Xml-Dokument stehen, d.h. du erzeugst einen TStringStream und schreibst dort Deine Xml-Datei rein. Es müsste bei den Streams auch ein CopyFrom/CopyTo geben, vorher die ermittelte (Anfangs-) Stream.Position setzen und die Größe hast Du ja auch. |
AW: XML aus einem binär Stream fischen
Grundsätzlich nehmen praktisch alle XML-Libs auch Streams entgegen, aber wie bereits gesagt wurde, muß in diesem Stream, ab der aktuellen Position (gibt nur seltne Ausnahlen, die immer vom Anfang ausgehn) bis zum Ende ein gültiges XML vorkommen.
Also mußt du mindstesten den gewünschten Teil in einen anderen Stream kopieren, aber da kannst du das oftmals auch gleich als TEXT auslesen und und in die XML-Komponente laden. |
AW: XML aus einem binär Stream fischen
Hey, vielen Dank und es läuft bereits.
Delphi-Quellcode:
hat's gebracht, Dankeschön!
memXML.LoadFromStream(memXMLStream);
Ich musst nur mein Array weglassen aber dafür ein Stream erzeugen mit gleichem Inhalt. Nun gehts an's Eingemachte :) Danke himitsu für den Tipp aber da ich völliger Neuling mit XML bin, bin ich froh wenn ich Definitionen und Werte auslesen kann, woran ich gerade werkel, wie ich TEXT auslese und direkt in die memXML bekomme da tun sich noch mehr Fragezeichen auf. Ich verwende das
Delphi-Quellcode:
Framework, ein anderes hab ich in Delphi nicht entdecken können.
var memXML := Xml.XMLDoc.TXMLDocument;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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