Hi everyone.
I developped a webservice with libcsoap api. This one use libxml2, of
course.
I use libxml2 version 2.6.32 on Linux Gentoo.
We are doing some tests on this webservice and we have a very long time
to get a response with a big XML.
(nearly 7mo xml).
We tried gprof to find why it takes more than 20secs ! and we found that
all the 20secs are spent
in libxml2, function xmlNodeDump().
So I tried to define which function inside xmlNodeDump is in charge. And
I found, if I patched libxml2 to use exclusively
function xmlOutputBufferWriteString() instead of
xmlOutputBufferWriteEscape(), the return takes only 1sec !
The source I patched to get this result is in xmlsave.c file in function
xmlNodeDumpOutputInternal(). This function parse everything in the node.
All nodes types are XML_TEXT_NODE and are encoded into base64. So, I
don't need to escape
characters in these strings.
The function xmlOutputBufferWriteEscape() is always called because the
node name (cur->name in source code) is always equal to the global const
xmlStringText.
I tried to build my xml with a node name equal to xmlStringTextNoenc
instead of xmlStringText but nothing changed.
Is there a known issue with xmlOutputBufferWriteEscape() function ?
Is there a solution to get node->name equal to xmlStringTextNoenc
instead of xmlStringText, and how ?
Thanks in advance for your help.
_______________________________________________
xml mailing list, project page http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml