Autor Beitrag
LexyK
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 24.06.11 06:29 
Hallo zusammen,

ich muss meine Daten im XML-Format (XElement) aufbauen und diesen dann als string an eine andere Komponente zurückgeben. Es handelt sich hier um eine Schnittstelle, die leider nicht geändert werden kann. Jetzt habe ich das Problem, dass ich so viele Daten habe, dass wenn ich dann sage "ToString()" an meinem obersten XML-Knoten, dann bekomme ich eine OutOfMemoryException. Gibt es irgendeine Möglichkeit, vorher zu testen, ob der String platzen würde? Dann würde ich nicht alle Daten an die Schnittstelle zurückgeben.

Vielen Dank für Eure Hilfe!

LexyK
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19317
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 24.06.11 07:03 
Ich weiß nicht, ob das bei diesen XML-Klassen passieren kann, aber eine andere Möglichkeit wäre, dass ein Kindknoten wiederum auf einen weiter oben im Baum verweist, so dass es eine Endlosrekursion gibt. Gibt es die Möglichkeit, dass das so ist?

Und von welchen Datenmengen reden wir hier eigentlich? Funktioniert es denn mit weniger Daten korrekt?
LexyK Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 24.06.11 12:21 
Hallo jaenicke,

es handelt sich um 54078 Einträge in der Tabelle mit 23 Spalten. Es können aber auch noch mehr Daten werden. Leider muss ich mit Massendaten arbeiten und die Schnittstelle gibt mir vor, die Daten in XML zu pressen. Es schaut für mich nicht nach einer Endlosrekursion aus. Nach 9920 Einträgen aus der Tabelle bekomme ich die Exception. Bei wenigen Datensätze funktioniert es.
Irgendwelche Vorschläge?

Danke!
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 24.06.11 16:45 
Reicht es denn nicht, ein festes Limit von Tabellenzeilen zu setzen? Ob der Speicher wirklich überläuft, wirst du nur feststellen können, indem du die OOM-Exception abfängst.

_________________
>λ=
LexyK Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 25.06.11 06:21 
Hallo Kha,

ja, das ginge schon auch. Ich dachte nur es gäbe noch eine andere Möglichkeit. Ich habe zum Beispiel versucht über das Encoding mir die Bytes geben zu lassen und dann die Obergrenze des Strings abzufragen. Das hat irgendwie nicht funktioniert. Aber wenn es keine andere Möglichkeit gibt, dann muss man das über ein festes Limit von Tabellenzeilen machen.