the boost xml serialization to a stringstream does not have an end tag.
Hi,
When I xml serialize an object to a stringstream i get the following output
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
Hi Sangeeta, I get the same behavior as you do, but only if I don't let the xml_oarchive go out of scope. If it goes out of scope, then the end tag is written. John Sangeeta Singh wrote:
Hi,
When I xml serialize an object to a stringstream i get the following output
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!DOCTYPE boost_serialization>
<bidResponse class_id="0" tracking_level="0" version="0"> <oppId>69</oppId> <delay>0</delay> <bid class_id="1" tracking_level="0" version="0"> <maxBid>5.3000002</maxBid> <minBid>5.3000002</minBid> <adBlob>adblob</adBlob> </bid> </bidResponse> As can be seen the end tag is missing. thi shappens even if I flush the stringstream.
If i xml serialize to a text file I do not see this problem here is the o/p when I xml serialize to a text file
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!DOCTYPE boost_serialization>
<bidRequest class_id="0" tracking_level="0" version="0"> <oppId>34567889</oppId> </bidRequest> <bidRequest class_id="0" tracking_level="0" version="0"> <oppId>44567889</oppId> </bidRequest> Any idea how to resolve this.
Thanks, Sangeeta
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- John Pretz -- P-23, MS H803 Los Alamos National Lab Los Alamos, NM 87545 Phone: (505)665-5847 Fax: (505)665-4121
Just make sure that the archive is closed BEFORE the stream - like this: { std::ostream os { boost::archive::xml_oarchive(os) .... } // archive destructor writes endtag } // stream destructor closes stream Robert Ramey Sangeeta Singh wrote:
Hi,
When I xml serialize an object to a stringstream i get the following output <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!DOCTYPE boost_serialization>
<bidResponse class_id="0" tracking_level="0" version="0"> <oppId>69</oppId> <delay>0</delay> <bid class_id="1" tracking_level="0" version="0"> <maxBid>5.3000002</maxBid> <minBid>5.3000002</minBid> <adBlob>adblob</adBlob> </bid> </bidResponse> As can be seen the end tag is missing. thi shappens even if I flush the stringstream.
If i xml serialize to a text file I do not see this problem here is the o/p when I xml serialize to a text file
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!DOCTYPE boost_serialization>
<bidRequest class_id="0" tracking_level="0" version="0"> <oppId>34567889</oppId> </bidRequest> <bidRequest class_id="0" tracking_level="0" version="0"> <oppId>44567889</oppId> </bidRequest> Any idea how to resolve this.
Thanks, Sangeeta
Hello, Doesn't the standard guaranty that the following would have the same effect in terms of order of destruction?? { std::ostream os boost::archive::xml_oarchive ar(os) } // archive destructor writes endtag, THEN stream destructor closes stream Bruno
Bruno Lalande wrote:
Hello,
Doesn't the standard guaranty that the following would have the same effect in terms of order of destruction??
{ std::ostream os boost::archive::xml_oarchive ar(os) } // archive destructor writes endtag, THEN stream destructor closes stream
Yes, but for at least ostringstream you've lost your output. :-) Jeff
participants (5)
-
Bruno Lalande
-
Jeff Flinn
-
John Pretz
-
Robert Ramey
-
Sangeeta Singh