Gareth,

Thanks for such a quick response. When I do as you suggested I receive this 
output:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<S_RPS>
       <c_id>AA</c_id>
       <c_id>AA</c_id>
       <c_id>AA</c_id>
      <c_id>AA</c_id>
</S_RPS>

However, I want to achieve this output:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<S_RPS>
       <c_id>AA</c_id>
</S_RPS>
<S_RPS>
       <c_id>AA</c_id>
</S_RPS>
<S_RPS>
       <c_id>AA</c_id>
</S_RPS>
<S_RPS>
       <c_id>AA</c_id>
</S_RPS>
<S_RPS>
       <c_id>AA</c_id>
</S_RPS>

Once again, thanks for the fast response. That's awesome.

Raymond

From: Gareth Reakes [mailto:[email protected]]
Sent: Thursday, December 16, 2010 11:32 AM
To: [email protected]
Subject: EXTERNAL: Re: XML Declaration

Hi Raymond,

            It does that because you are creating multiple DOM documents and 
each one of those has an XML declaration. You do that here:

       DOMDocument* document = implement->createDocument(0, 
XMLString::transcode("S_RPS"), 0);


If you move that line and the next:

       DOMElement* rootElement = document->getDocumentElement();

out of the loop then you will create 1 document with all the <c_id> elements 
inside inside a single <S_PRS> root element.

Cheers,

Gareth



On 16 Dec 2010, at 18:17, Steele, Raymond wrote:


Hello,

Using Xerces 3.1.0-C++, I am creating a DOMDocument to stdout.  I am trying to 
retrieve all the records in a .data file, which is in the form of a C struct.  
Each record has multiple records with many elements. When I run the 
application, the XML Declaration is repeated for each record. I do not like 
this behavior and cannot figure out how to stop it. Can someone shed some 
light? Thanks in advance. Here is a sample of the code.

XMLPlatform::Initialize ();
DOMImplmentation* implement = 
DOMImplementationRegistry::getDOMImplementation(XMLString:transcode("Core"));

for ( int i=0; i<5; i++)
{
       DOMDocument* document = implement->createDocument(0, 
XMLString::transcode("S_RPS"), 0);
       DOMElement* rootElement = document->getDocumentElement();

       DOMElement* c_id = document->createElement(XMLString::transcode("c_id"));
       string new_c_id(struct_name[i].c_id, sizeof(struct_name[i].c_id));
       c_id->setTextContent(XMLString::transcode(new_c_id.c_str()));
       rootElement->appendChild(c_id)

       DOMLSSerializer* serializer = 
(DOMImplementationLS*)implement)->createLSSerializer();
       DOMLSOutput* output = 
((DOMImplementationLS*)implement)->createLSOutput();
       DOMConfiguration* config = serializer->getDomConfig();
       config->setParameter(XMLuni::fgDOMWRTFormatPrettyPrint, true);
       StdOutFormatTarget* target = new StdOutFormatTarget();
       output->setByteStream(target);
       serializer->write(document, output);

       delete target;
       output->release();
       serializer->release();
}

This will produce:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<S_RPS>

       <c_id>AA</c_id>

</S_RPS>
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<S_RPS>

       <c_id>AA</c_id>

</S_RPS>
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<S_RPS>

       <c_id>AA</c_id>

</S_RPS>
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<S_RPS>

       <c_id>AA</c_id>

</S_RPS>
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<S_RPS>

       <c_id>AA</c_id>

</S_RPS>

Why does it keep repeating the <?xml version="1.0" encoding="UTF-8" 
standalone="no" ?> ?

Thanks!








---------------------------------------------------------------------
To unsubscribe, e-mail: 
[email protected]<mailto:[email protected]>
For additional commands, e-mail: 
[email protected]<mailto:[email protected]>


--
Gareth Reakes, CTO         WE7 - Great Music, Free
+44-20-7117-0809                    http://www.we7.com<http://www.we7.com/>

"The music business is a cruel and shallow money trench, a long plastic hallway 
where thieves and pimps run free, and good men die like dogs. There's also a 
negative side. "
- Hunter S. Thompson



Reply via email to