You are passing an uninitialized variable sCtxt to xmlSaveTree. I'd 
suggest you take a look at the documentation on xmlSaveTo... functions, 
e.g.
xmlSaveCtxtPtr xmlSaveToBuffer(
     xmlBufferPtr buffer,
     const char * encoding,
     int options)
at http://www.xmlsoft.org/html/libxml-xmlsave.html

Furthermore, when accessing the XPath query, you may want to use 
xmlXPathNodeSetItem see 
http://www.xmlsoft.org/html/libxml-xpath.html#xmlXPathNodeSetItem) and 
do proper error checking (but you were going to add that later anyway, 
weren't you? ;)

HTH
Lars

Krishna Kumar wrote:
> Hi,
> 
> Am I using xmlSaveTree() properly in the following example? I am
> getting a "Internal error, no document" error on running this piece of
> code.
> 
> Or is something else throwing that error? I am simply trying to
> extract a node and its decendants and storing them in a buffer, so i
> can use them in a string for later. BTW, the commented call to
> xmlElemDump() works.
> 
> void SAMLAssertion::parse_assertion(const String &source) {
> 
>     XMLPlatformUtils::Initialize();
>     xmlDocPtr doc;
>     xmlXPathContextPtr xpathCtx;
>     xmlXPathObjectPtr xpathObj;
> 
>     xmlSaveCtxtPtr sCtxt;
>     xmlBufferPtr xbuf;
> 
>     doc = xmlParseMemory(source.chars(), source.length());
> 
>     xpathCtx = xmlXPathNewContext(doc);
> 
>     xmlXPathRegisterNs(xpathCtx, (const xmlChar* )"ds", (const
> xmlChar* )"http://www.w3.org/2000/09/xmldsig#";);
>     xmlXPathRegisterNs(xpathCtx, (const xmlChar* )"saml", (const
> xmlChar* )"urn:oasis:names:tc:SAML:2.0:protocol");
> 
>     xpathObj = xmlXPathEvalExpression((const xmlChar*
> )"/ds:SignedInfo/descendant-or-self::node()", xpathCtx);
> 
>    xmlNodeSetPtr nodes = xpathObj->nodesetval;
> 
>     xbuf = xmlBufferCreate();
>     xmlNodePtr node = nodes->nodeTab[0];
>     xmlSaveTree(sCtxt,node);
> //xmlElemDump(stdout,doc,nodes->nodeTab[0]);
> 
>     xmlSaveClose(sCtxt);
>     xmlFreeDoc(doc);
>     xmlBufferFree(xbuf);
>     XMLPlatformUtils::Terminate();
> 
> }
> 
> Thanks,
> Krishna Kumar
> _______________________________________________
> xml mailing list, project page  http://xmlsoft.org/
> [email protected]
> http://mail.gnome.org/mailman/listinfo/xml

_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to