[osg-users] Serialization differences between ASCII and XML
Julien Valentin
julienvalentin51 at gmail.com
Thu Dec 28 10:51:44 PST 2017
Hi Hartwig
I have no experience with osgx format
But the bug seams to come from osgDB/XMLParser.cpp
perhaps removing newline from strings in osgDB::XMLParser::writeString
could to the trick...
Cheers
hartwigw wrote:
> Hi,
>
> wrote a simple serialiser for the output of a range:
>
>
> Code:
>
> namespace
> {
> bool checkGeographicRange(osgPlanetCore::GeodeticData const&)
> {
> return true;
> }
>
> bool readGeographicRange(osgDB::InputStream& inputStream, osgPlanetCore::GeodeticData& geodeticData)
> {
> osgPlanetCore::GeographicRange geographicRange;
>
>
> if (osgPlanetWrappers::readRange(inputStream,geographicRange))
> {
> geodeticData.setGeographicRange(geographicRange);
> return true;
> } /* if */
> else
> return false;
> }
>
> bool writeGeographicRange(osgDB::OutputStream& outputStream, osgPlanetCore::GeodeticData const& geodeticData)
> {
> outputStream << std::endl;
> return osgPlanetWrappers::writeRange(outputStream,geodeticData.getGeographicRange());
> }
>
> } /* namespace */
>
> template < typename Values >
> bool readRange(osgDB::InputStream& inputStream, osgPlanetCore::Range< Values >& range)
> {
> inputStream >> inputStream.BEGIN_BRACKET;
> inputStream >> inputStream.PROPERTY("FromValues") >> range.getFromValues();
> inputStream >> inputStream.PROPERTY("TillValues") >> range.getTillValues();
> inputStream >> inputStream.END_BRACKET;
> return true;
> }
>
> template < typename Values >
> bool writeRange(osgDB::OutputStream& outputStream, osgPlanetCore::Range< Values > const& range)
> {
> outputStream << outputStream.BEGIN_BRACKET << std::endl;
> outputStream << outputStream.PROPERTY("FromValues") << range.getFromValues() << std::endl;
> outputStream << outputStream.PROPERTY("TillValues") << range.getTillValues() << std::endl;
> outputStream << outputStream.END_BRACKET << std::endl;
> return true;
> }
>
>
>
>
>
> In a wrapper I call
>
> Code:
>
> ADD_USER_SERIALIZER(GeographicRange);
>
>
>
>
> Basically serialisation should write / read two vectors indicating a lower and a higher limit of a geodetic range.
>
> The ASCII output looks like:
>
> GeographicRange
> {
> FromValues -135 40.9799 -10000
> TillValues -90 66.5133 10000
> }
>
> Which seems to be fine.
>
> The XML output looks like:
>
> < FromValues attribute="-135 40.9799 -10000&nl;" >
> < TillValues attribute="-90 66.5133 10000&nl;&nl;" >
> < /TillValues >
> < /FromValues >
>
> Which is not really the same. Besides the fact that "GeographicRange" is gone completely.
>
> How do I make the output of both versions the same?
>
> Cheers,
> Hartwig
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=72647#72647
More information about the osg-users
mailing list