void php_libxml_node_free(xmlNodePtr node) { if (node) { switch (node->type) { case XML_ATTRIBUTE_NODE: xmlFreeProp((xmlAttrPtr) node); break; case XML_ENTITY_DECL: case XML_ELEMENT_DECL: case XML_ATTRIBUTE_DECL: break; case XML_NOTATION_NODE: /* These require special handling */ if (node->name != NULL) { xmlFree((char *) node->name); } if (((xmlEntityPtr) node)->ExternalID != NULL) { xmlFree((char *) ((xmlEntityPtr) node)->ExternalID); } if (((xmlEntityPtr) node)->SystemID != NULL) { xmlFree((char *) ((xmlEntityPtr) node)->SystemID); } xmlFree(node); break; case XML_NAMESPACE_DECL: if (node->ns) { xmlFreeNs(node->ns); node->ns = NULL; } node->type = XML_ELEMENT_NODE; default: xmlFreeNode(node); } } }
void my_xmlSetProp(xmlNodePtr node, const gchar* name, const gchar* str) { xmlAttrPtr prop; prop = xmlSetProp(node, (xmlChar *)name, (xmlChar *)str); if (str == NULL || *str == '\0') { xmlAttrPtr iter; xmlAttrPtr prev; prev = NULL; iter = node->properties; while (iter != NULL) { if (iter == prop) break; prev = iter; iter = iter->next; } g_assert(iter == prop); if (prev) prev->next = iter->next; else node->properties = iter->next; /* we were the first node */ xmlFreeProp(iter); } }
void rxml_attr_free(xmlAttrPtr xattr) { if (!xattr) return; xattr->_private = NULL; if (xattr->parent == NULL && xattr->doc == NULL) { xmlFreeProp(xattr); } }
void cal_write_notes (GUI *appGUI) { xmlDocPtr doc; xmlNodePtr main_node, node, note_node, dc_node; xmlAttrPtr attr; GtkTreeIter iter; GSList *lnode; struct note *a; gchar *category, *color_str; gint i; xmlChar *escaped; if ((appGUI->save_status & WRT_CALENDAR_NOTES) != 0) return; appGUI->save_status |= WRT_CALENDAR_NOTES; doc = xmlNewDoc ((const xmlChar *) "1.0"); attr = xmlNewDocProp (doc, (const xmlChar *) "encoding", (const xmlChar *) "utf-8"); main_node = xmlNewNode (NULL, (const xmlChar *) CALENDAR_NOTES_NAME); xmlDocSetRootElement (doc, main_node); node = xmlNewChild (main_node, NULL, (const xmlChar *) CALENDAR_DAY_CATEGORIES_NAME, (xmlChar *) NULL); i = 0; while (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, NULL, i++)) { gtk_tree_model_get (GTK_TREE_MODEL (appGUI->opt->calendar_category_store), &iter, 1, &color_str, 2, &category, -1); escaped = xmlEncodeEntitiesReentrant(doc, (const xmlChar *) category); dc_node = xmlNewChild (node, NULL, (const xmlChar *) "name", (xmlChar *) escaped); g_free (category); xmlFree (escaped); escaped = xmlEncodeEntitiesReentrant(doc, (const xmlChar *) color_str); xmlNewProp (dc_node, (const xmlChar *) "color", (xmlChar *) escaped); g_free (color_str); xmlFree (escaped); } for (i = 0, lnode = appGUI->cal->notes_list; lnode; lnode = lnode->next, i++) { a = g_slist_nth_data (appGUI->cal->notes_list, i); note_node = xmlNewChild (main_node, NULL, (const xmlChar *) "note", (xmlChar *) NULL); utl_xml_put_uint ("date", a->date, note_node); utl_xml_put_str ("color", a->color, note_node, doc); utl_xml_put_str ("message", a->note, note_node, doc); } xmlSaveFormatFileEnc (prefs_get_config_filename (CALENDAR_NOTES_FILENAME, appGUI), doc, "utf-8", 1); xmlFreeProp (attr); xmlFreeDoc (doc); appGUI->save_status &= ~WRT_CALENDAR_NOTES; }
// Inherits XMLSpy generation source function. void CNode::InternalRemoveAt(ENodeType eNodeType, const tstring& sNamespaceURI, const tstring& sName, int nIndex) { xmlNodePtr pNode = InternalGetAt(eNodeType, sNamespaceURI, sName, nIndex); if (eNodeType == Element) { xmlUnlinkNode(pNode); xmlFreeNode(pNode); } else { xmlRemoveProp((xmlAttrPtr)pNode); xmlFreeProp((xmlAttrPtr)pNode); } }
void ruby_xml_attr_free(xmlAttrPtr xattr) { if (!xattr) return; if (xattr != NULL ) { xattr->_private=NULL; if (xattr->parent == NULL && xattr->doc == NULL ) { #ifdef NODE_DEBUG fprintf(stderr,"ruby_xfree rxn=0x%x xn=0x%x o=0x%x\n",(long)rxn,(long)rxn->node,(long)rxn->node->_private); #endif xmlFreeProp(xattr); } xattr=NULL; } }
void php_libxml_node_free(xmlNodePtr node) { if (node) { if (node->_private) { // XXX: we may be sweeping- so don't create a smart pointer reinterpret_cast<XMLNodeData*>(node->_private)->reset(); } switch (node->type) { case XML_ATTRIBUTE_NODE: xmlFreeProp((xmlAttrPtr) node); break; case XML_ENTITY_DECL: case XML_ELEMENT_DECL: case XML_ATTRIBUTE_DECL: break; case XML_NOTATION_NODE: /* These require special handling */ if (node->name != NULL) { xmlFree((char *) node->name); } if (((xmlEntityPtr) node)->ExternalID != NULL) { xmlFree((char *) ((xmlEntityPtr) node)->ExternalID); } if (((xmlEntityPtr) node)->SystemID != NULL) { xmlFree((char *) ((xmlEntityPtr) node)->SystemID); } xmlFree(node); break; case XML_NAMESPACE_DECL: if (node->ns) { xmlFreeNs(node->ns); node->ns = NULL; } node->type = XML_ELEMENT_NODE; default: xmlFreeNode(node); } } }
/* frees the node if nessecary. this method is aware, that libxml2 * has several diffrent nodetypes. */ void PmmFreeNode( xmlNodePtr node ) { switch( node->type ) { case XML_DOCUMENT_NODE: case XML_HTML_DOCUMENT_NODE: xs_warn("PmmFreeNode: XML_DOCUMENT_NODE\n"); xmlFreeDoc( (xmlDocPtr) node ); break; case XML_ATTRIBUTE_NODE: xs_warn("PmmFreeNode: XML_ATTRIBUTE_NODE\n"); if ( node->parent == NULL ) { xs_warn( "PmmFreeNode: free node!\n"); node->ns = NULL; xmlFreeProp( (xmlAttrPtr) node ); } break; case XML_DTD_NODE: if ( node->doc != NULL ) { if ( node->doc->extSubset != (xmlDtdPtr)node && node->doc->intSubset != (xmlDtdPtr)node ) { xs_warn( "PmmFreeNode: XML_DTD_NODE\n"); node->doc = NULL; xmlFreeDtd( (xmlDtdPtr)node ); } } else { xs_warn( "PmmFreeNode: XML_DTD_NODE (no doc)\n"); xmlFreeDtd( (xmlDtdPtr)node ); } break; case XML_DOCUMENT_FRAG_NODE: xs_warn("PmmFreeNode: XML_DOCUMENT_FRAG_NODE\n"); default: xs_warn( "PmmFreeNode: normal node\n" ); xmlFreeNode( node); break; } }
int xml_parser_attr_remove(WsXmlAttrH attr) { xmlAttrPtr xmlAttr = (xmlAttrPtr) attr; xmlNodePtr xmlNode = (xmlNodePtr) xmlAttr->parent; xmlAttrPtr xmlAttrPrev = (xmlNode->properties == xmlAttr) ? NULL : xmlNode->properties; while (xmlAttrPrev != NULL && xmlAttrPrev->next != xmlAttr) { xmlAttrPrev = xmlAttrPrev->next; } if (xmlAttrPrev != NULL) xmlAttrPrev->next = xmlAttr->next; else xmlNode->properties = xmlAttr->next; xmlNode->parent = NULL; xmlNode->next = NULL; destroy_attr_private_data((xmlAttrPtr) attr); xmlFreeProp((xmlAttrPtr) attr); return 0; }
void attr__free( Attr *attr ) { xmlFreeProp(( xmlAttr* ) attr ) ; }