Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   XML (http://www.velocityreviews.com/forums/f32-xml.html)
-   -   How to write XML declaration with DOMWriter class Xerces-c (http://www.velocityreviews.com/forums/t463431-how-to-write-xml-declaration-with-domwriter-class-xerces-c.html)

christian.eickhoff@nt.uni-saarland.de 03-05-2007 10:14 AM

How to write XML declaration with DOMWriter class Xerces-c
 
Hello Everyone,

currently I am implementing a solution to write individually created
XML data to a file using c++ and Xerces-c 2.7.0 library. Therefore I
am making use of DOMWriter class which allows me to write the
according DOM tree to a given location using LocalFileFormatTarget().
Everything works fine except that I cant define and set a certain XML
declaration. The tutorial seems to provide an easy way to do this by
applying the setEncoding(), setVersion() or setStandalone() functions
to the according DOMDocument. But even after setting those parameters
as well as enabling the fgDOMXMLDeclaration() feature of the DOMWriter
nothing is written except one empty line at the beginning of the
document. What am I doing wrong???

The according code snippet is given below:

const XMLCh gLS[] = { chLatin_L, chLatin_S, chNull };
DOMImplementation* impl =
DOMImplementationRegistry::getDOMImplementation(gL S);
DOMWriter* theSerializer = ((DOMImplementationLS*)impl)-
>createDOMWriter();

if (theSerializer->canSetFeature(XMLUni::fgDOMXMLDeclaration,true) )
theSerializer->setFeature(XMLUni::fgDOMXMLDeclaration, true);

DOMDocument* doc;
doc = impl->createDocument(
0, // root element
namespaceURI.
XMLString::transcode("rootnode"),
// root element name
0); // document type
object(DTD).

doc->setEncoding(XMLString::transcode("UTF-8"));
doc->setVersion(XMLString::transcode("1.0"));

DOMNode* node = XMLwalker->getRoot(); //Set
Walker to Root node of the document
XMLFormatTarget *myFormTarget;
myFormTarget = new
LocalFileFormatTarget(written_XML_name.c_str()); //output to file
try{
theSerializer->writeNode(myFormTarget, *node);
}
catch.....

Any Help is appreciated as for my purposes the integration of the xml
declaration is compulsory!

Best regards,
Christian Eickhoff


spiff 03-05-2007 01:15 PM

Re: How to write XML declaration with DOMWriter class Xerces-c
 
On 5 Mrz., 11:14, christian.eickh...@nt.uni-saarland.de wrote:
> DOMNode* node = XMLwalker->getRoot(); //Set
> Walker to Root node of the document
> XMLFormatTarget *myFormTarget;
> myFormTarget = new
> LocalFileFormatTarget(written_XML_name.c_str()); //output to file
> try{
> theSerializer->writeNode(myFormTarget, *node);


Hi Christian!

You get the XML root here with XMLwalker->getRoot(); but not the root
of the DOM tree. DOMDocument is actually the root of your DOM. Try
replacing writeNode(myFormTarget, *node) with writeNode(myFormTarget,
*doc).

Regards spiff
http://www.spycomponents.com




christian.eickhoff@nt.uni-saarland.de 03-05-2007 03:02 PM

Re: How to write XML declaration with DOMWriter class Xerces-c
 
On 5 Mrz., 14:15, "spiff" <s...@gmx.at> wrote:
> On 5 Mrz., 11:14, christian.eickh...@nt.uni-saarland.de wrote:
>
> > DOMNode* node = XMLwalker->getRoot(); //Set
> > Walker to Root node of the document
> > XMLFormatTarget *myFormTarget;
> > myFormTarget = new
> > LocalFileFormatTarget(written_XML_name.c_str()); //output to file
> > try{
> > theSerializer->writeNode(myFormTarget, *node);

>
> Hi Christian!
>
> You get the XML root here with XMLwalker->getRoot(); but not the root
> of the DOM tree. DOMDocument is actually the root of your DOM. Try
> replacing writeNode(myFormTarget, *node) with writeNode(myFormTarget,
> *doc).
>
> Regards spiffhttp://www.spycomponents.com


Hey spiff,

not the first time you helped me out!!! Thanks so much, good to have
versed experts like you! Now everything works fine =))..

With best regards,
Christian Eickhoff


spiff 03-05-2007 09:03 PM

Re: How to write XML declaration with DOMWriter class Xerces-c
 
On 5 Mrz., 16:02, christian.eickh...@nt.uni-saarland.de wrote:
> not the first time you helped me out!!! Thanks so much, good to have
> versed experts like you! Now everything works fine =))..
>
> With best regards,
> Christian Eickhoff


Christian,
fine that it is working now :-)

spiff



All times are GMT. The time now is 08:47 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.