|
|
Re: Pasting fragment: msg#00140
|
Subject: |
Re: Pasting fragment |
> On Thu, Aug 22, 2002 at 01:41:52PM +0200, chrisbee.xml@xxxxxxxx wrote: > > Hi Daniel, > > I can't figure out how I have to correctly plug resulting node list into an node of an existing document. > > Could you, please, tell me if what follows is the correct way to parse a balanced string and plug the result into an existing node ? > > > > // Assume node must become the parent of the parsed balanced string str: > > xmlNodePtr nodeList; > > // First parameter (doc) set to NULL (Undocumented behaviour). > > // -> Avoids the resulting nodes to be attached an existing document. > > if (xmlParseBalancedChunkMemory(NULL, NULL, NULL, 0, (xmlChar *)str, &nodeList) == 0) > > { > > // OK it is a balanced chunk > > // Recursively update all doc of nodeList > > // NB: It must be done before xmlAddChildListNode! !
>
> // Otherwise xmlSetListDoc don't update children doc. > > xmlSetListDoc(nodeList, node->doc); > > > > if (xmlAddChildList(node, nodeList) == NULL) > > { > > ..... > > } > > } > > looks okay a priori. But I really can't understand why you don't > want to pass node->doc to xmlParseBalancedChunkMemory() , to later > update it everywhere in the resulting nodes ... This makes absolutely no > sense to me !
Because I do some tests before and calling xmlParseBalancedChunkMemory() initialized doc->children with the result node llist. But it seems that this happens only if doc->children is NULL (Is this a bug ?). At this time, I (wrongly) concluded that when a doc argument was provided, xmlParseBalancedChunkMemory() replaces doc->children with the result nodes of parsing.
OK! now I do the following instead
xmlNodePtr nodeList; if (xmlParseBalancedChunkMemory(node->doc, NULL, NULL, 0, (xmlChar *)str, &nodeList) == 0) { if (xmlAddChildList(node, nodeList) == NULL) { ... } }
Thank you for your help.
Christophe
|
| |