<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Serialisierung sich verändernder Objekte]]></title><description><![CDATA[<p>Ich arbeite mit boost/serialization um Objekte in XML Dateien zu archivieren. Dabei habe ich einen Zeiger auf das Objekt und übergebe ihn dem Archiv. Was dabei heraus kommt ist genau das was ich will:</p>
<pre><code>&lt;BeispielModul1 class_id=&quot;1&quot; tracking_level=&quot;1&quot; version=&quot;0&quot; object_id=&quot;_2&quot;&gt;
  &lt;Modulname&gt;BeispielModul1&lt;/Modulname&gt;
  &lt;DatenArt&gt;BeispielDaten1&lt;/DatenArt&gt;
  &lt;laufen&gt;1&lt;/laufen&gt;
  &lt;Taktlaufzeit&gt;222901&lt;/Taktlaufzeit&gt;
  ..
&lt;/BeispielModul1&gt;
</code></pre>
<p>Allerdings arbeite ich taktbasiert und die Objekte verändern sich in jedem Takt! Genau das möchte ich als nachvollziehbare Historie abspeichern. Wenn ich den selben Zeiger aber ein zweites Mal serialisieren möchte kommt nur noch das heraus:</p>
<pre><code>&lt;BeispielModul1 class_id_reference=&quot;1&quot; object_id_reference=&quot;_2&quot;&gt;&lt;/BeispielModul1&gt;
</code></pre>
<p>Das ist natürlich sehr unbrauchbar. Sieht aus wie ein Verweis als XML. Kann man das irgendwie abstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/294227/serialisierung-sich-verändernder-objekte</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 22:42:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/294227.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 Oct 2011 11:51:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Serialisierung sich verändernder Objekte on Thu, 20 Oct 2011 11:51:04 GMT]]></title><description><![CDATA[<p>Ich arbeite mit boost/serialization um Objekte in XML Dateien zu archivieren. Dabei habe ich einen Zeiger auf das Objekt und übergebe ihn dem Archiv. Was dabei heraus kommt ist genau das was ich will:</p>
<pre><code>&lt;BeispielModul1 class_id=&quot;1&quot; tracking_level=&quot;1&quot; version=&quot;0&quot; object_id=&quot;_2&quot;&gt;
  &lt;Modulname&gt;BeispielModul1&lt;/Modulname&gt;
  &lt;DatenArt&gt;BeispielDaten1&lt;/DatenArt&gt;
  &lt;laufen&gt;1&lt;/laufen&gt;
  &lt;Taktlaufzeit&gt;222901&lt;/Taktlaufzeit&gt;
  ..
&lt;/BeispielModul1&gt;
</code></pre>
<p>Allerdings arbeite ich taktbasiert und die Objekte verändern sich in jedem Takt! Genau das möchte ich als nachvollziehbare Historie abspeichern. Wenn ich den selben Zeiger aber ein zweites Mal serialisieren möchte kommt nur noch das heraus:</p>
<pre><code>&lt;BeispielModul1 class_id_reference=&quot;1&quot; object_id_reference=&quot;_2&quot;&gt;&lt;/BeispielModul1&gt;
</code></pre>
<p>Das ist natürlich sehr unbrauchbar. Sieht aus wie ein Verweis als XML. Kann man das irgendwie abstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133668</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Thu, 20 Oct 2011 11:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to Serialisierung sich verändernder Objekte on Mon, 24 Oct 2011 12:47:59 GMT]]></title><description><![CDATA[<blockquote>
<p>Wenn ich den selben Zeiger aber ein zweites Mal serialisieren möchte kommt nur noch das heraus</p>
</blockquote>
<p>Ja, klar, das soll ja auch so sein.<br />
Boost.Serialization ist ja keine Logging- oder XML-Generierungs-Lib, sondern eben eine Serialisierungs-Lib.<br />
Und da will man, wenn man &quot;Graphen&quot; speichert, in denen das selbe Objekt mehrfach referenziert wird, die Daten dieses Objekts halt nur 1x speichern. (Da man nach dem Reinladen wieder einen equivalenten Graphen haben möchte, wo das Objekt ebenfalls nur 1x vorkommt, aber halt mehrfach referenziert wird)</p>
<p>Schliess' die Serialisierung ab (k.A. wie das mit Boost.Serialization genau geht, vermutlich mit archive.close() + Zerstören von archive oder so), und fang eine neue an.</p>
<p>ps: jede (mir bekannte) Serialisierungs-Lib geht davon aus dass ein &quot;Snapshot&quot; gespeichert wird, also dass sich während des gesamten Serialisierungs-Vorganges nichts an den Daten ändert. Wenn du trotzdem etwas änderst, führt das natürlich zu Problemen.<br />
Also passe deine Vorgehensweise so an, dass du während eines Serialisierungs-Vorganges eben nichts änderst, oder verwende eine andere Lib zum speichern der Daten. z.B. eine &quot;einfache&quot; XML-Lib (TinyXML, Xerces - was auch immer).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2135093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2135093</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 24 Oct 2011 12:47:59 GMT</pubDate></item><item><title><![CDATA[Reply to Serialisierung sich verändernder Objekte on Mon, 24 Oct 2011 14:33:48 GMT]]></title><description><![CDATA[<p>Die Lösung lautet Objekt-Tracking und wird hier beschrieben: <a href="http://www.boost.org/doc/libs/1_37_0/libs/serialization/doc/traits.html" rel="nofollow">http://www.boost.org/doc/libs/1_37_0/libs/serialization/doc/traits.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2135160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2135160</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Mon, 24 Oct 2011 14:33:48 GMT</pubDate></item></channel></rss>