Thanks,
I fixed the problem by moving the createDocument and the serializer->write
outside of the loop.
I am new to this and I am now struggling because I am not sure how to convert
my c-style character arrays to the format the xerces accepts. In the below
snippet, I was able to convert the char[2] c_id to a c++ string and then
transcode that to set the text content. I am still not sure how that works and
I am afraid I am not releasing it as I think I should.
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)
If I have the following data:
char c_type; (8-bits)
which currently has the value of 'L'. How would I can I use that data to
setTextContent of the c_type element below.
DOMElement* c_type = document->createElement(XMLString::transcode("c_type"));
string new_c_id;
c_id->setTextContent(XMLString::transcode(new_c_id.c_str()));
rootElement->appendChild(c_id)
Raymond
Raymond
From: Gareth Reakes [mailto:[email protected]]
Sent: Thursday, December 16, 2010 11:45 AM
To: [email protected]
Subject: Re: EXTERNAL: Re: XML Declaration
The second is not a valid XML document. An XML document can only have 1 root
element. If you want them to appear is <S_RPS> tags then you can create another
element as the root element and attach them all to that.
Gareth
On 16 Dec 2010, at 18:33, Steele, Raymond wrote:
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]<mailto:[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
--
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