Examining the XML Output
Finally, the example writes to standard out two forms of the serialized object. You’ll also use the rwInsertWithName() global method in order to provide an instance name for the book object.
{
RWObjectOutputStream out = //1
RWEnhancedXmlObjectOutputStreamImp::make(cout);
out << rwInsertWithName("book2",book2); //2
}
cout << endl;
{
RWObjectOutputStream out = //3
RWXmlObjectOutputStreamImp::make(cout);
out << rwInsertWithName("book2",book2); //4
}
return 0;
}
Here is the resulting output:
In enhanced XML stream format:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<book2
xmlns:rw="http://www.roguewave.com/xmlstream" rw:class="book"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">
xsi:type="rw:nested_object">
<title xsi:type="xsd:string">To Love and Be Wise</title>
<author xsi:type="xsd:string">Josephine Tey</author>
</book2>
In ordinary XML stream format:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rw:nested_object rw:name="book2" rw:class="book"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:rw="http://www.roguewave.com/xmlstream">
<rw:member rw:name="title" xsi:type="xsd:string">To Love and Be
Wise</rw:member>
<rw:member rw:name="author" xsi:type="xsd:string">Josephine
Tey</rw:member></rw:nested_object>
If you need to control the format of the data within the XML stream, the streams classes have a
make() function that takes a pointer reference to an
std::ios object. The constructor for the XML stream fills this pointer with the address of a formatting object for the underlying character stream. Here is an example for the class
RWEnhancedXmlObjectOutputStreamImp.
std::ios* formatter; // uninitialized pointer
RWObjectOutputStream xostr =
RWEnhancedXMLObjectOutputStreamImp::make(
outfile,script,formatter);
formatter->precision(15); // manipulate data format
The following classes contain a make() function that supports a formatting object:
RWXmlObjectInputStreamImp RWXmlObjectOutputStreamImp RWEnhancedXmlObjectInputStreamImp RWEnhancedXmlObjectOutputStreamImp RWTTransformObjectInputStreamImp RWTTransformObjectOutputStreamImp