Hallo!
Ich schreib gerade an einem Programm das eine recht komplexe Struktur in ein XML Dokument schreiben soll.
Die DOM-Struktur baue ich auf, indem ich ein DOMDocument erstelle und diesem die Knoten hinzufüge.
Da die Struktur recht komplex ist erstelle ich mehrere Documente und erhalte Knoten.
Diese werden letztendlich in ein DOMDocument eingefügt und diese mit dem DOMWriter geschrieben.
nach jedem Schreibvorgang sollte der Speicher wieder geleert werden, damit ich möglichst viele Strukturen schreiben kann.
Diese geschieht aber nicht, ich kann maximal 700 Datensätze schreiben, dann ist der Speicher voll.
hier ein beispiel wie ein complexer Knoten geschrieben wird, d.h. Element+Kinder:
void XML_Writer::writeComplex(CString parent, CString value, std::map<CString, CString> childs, DOMElement* &elemNode)
{
std::map<CString, CString>::iterator childs_it;
DOMDocument* node;
DOMImplementation* implComplex;
implComplex = DOMImplementationRegistry::getDOMImplementation(X("Core"));
//creates a new Node for this Element
node = implComplex->createDocument(
0, // root element namespace URI.
X(parent), // root element name
0); // document type object (DTD).
elemNode = node->getDocumentElement();
if(value != "")
{
DOMText* bufferTxt = node->createTextNode(X(value));
elemNode->appendChild(bufferTxt);
}
childs_it = childs.begin();
for(; childs_it != childs.end(); childs_it++)
{
DOMElement* bufferElem = node->createElement(X(childs_it->first));
elemNode->appendChild(bufferElem);
DOMText* bufferTxt = node->createTextNode(X(childs_it->second));
bufferElem->appendChild(bufferTxt);
}
}
Kann mir vielleicht jemand helfen und sagen wo mein Fehler liegt?
oder hat jemand schon einmal ähnlich Erfahrungen gemacht?
Hat jemand vielleicht Tips?
MfG
Sandra
Ich schreib gerade an einem Programm das eine recht komplexe Struktur in ein XML Dokument schreiben soll.
Die DOM-Struktur baue ich auf, indem ich ein DOMDocument erstelle und diesem die Knoten hinzufüge.
Da die Struktur recht komplex ist erstelle ich mehrere Documente und erhalte Knoten.
Diese werden letztendlich in ein DOMDocument eingefügt und diese mit dem DOMWriter geschrieben.
nach jedem Schreibvorgang sollte der Speicher wieder geleert werden, damit ich möglichst viele Strukturen schreiben kann.
Diese geschieht aber nicht, ich kann maximal 700 Datensätze schreiben, dann ist der Speicher voll.
hier ein beispiel wie ein complexer Knoten geschrieben wird, d.h. Element+Kinder:
void XML_Writer::writeComplex(CString parent, CString value, std::map<CString, CString> childs, DOMElement* &elemNode)
{
std::map<CString, CString>::iterator childs_it;
DOMDocument* node;
DOMImplementation* implComplex;
implComplex = DOMImplementationRegistry::getDOMImplementation(X("Core"));
//creates a new Node for this Element
node = implComplex->createDocument(
0, // root element namespace URI.
X(parent), // root element name
0); // document type object (DTD).
elemNode = node->getDocumentElement();
if(value != "")
{
DOMText* bufferTxt = node->createTextNode(X(value));
elemNode->appendChild(bufferTxt);
}
childs_it = childs.begin();
for(; childs_it != childs.end(); childs_it++)
{
DOMElement* bufferElem = node->createElement(X(childs_it->first));
elemNode->appendChild(bufferElem);
DOMText* bufferTxt = node->createTextNode(X(childs_it->second));
bufferElem->appendChild(bufferTxt);
}
}
Kann mir vielleicht jemand helfen und sagen wo mein Fehler liegt?
oder hat jemand schon einmal ähnlich Erfahrungen gemacht?
Hat jemand vielleicht Tips?
MfG
Sandra