Example #1
0
static void remove_docs_from_content_list(struct IdTab *id_tab, int id_num, char *scrollkeeper_dir, char outputprefs)
{
    int start, end;    
    char cl_filename[PATHLEN], cl_ext_filename[PATHLEN];
    xmlDocPtr cl_doc, cl_ext_doc;
    
    if (id_tab == NULL)
        return;
		
    end = 0;
        
    while (1)
    {
        start = end;
    
        while (start < id_num && end < id_num &&
		!strcmp(id_tab[start].locale, id_tab[end].locale))
	    end++;
	    
	if (start >= id_num) 
	    break;
	    
	snprintf(cl_filename, PATHLEN, "%s/%s/scrollkeeper_cl.xml", scrollkeeper_dir, id_tab[start].locale);
	snprintf(cl_ext_filename, PATHLEN, "%s/%s/scrollkeeper_extended_cl.xml", scrollkeeper_dir, 
			id_tab[start].locale);
		    
	cl_doc = xmlParseFile(cl_filename);
    	if (cl_doc == NULL)
    	{
            sk_message(outputprefs, SKOUT_VERBOSE, SKOUT_QUIET,"(remove_docs_from_content_list)", _("wrong content list file %s\n"), cl_filename);
            continue;
    	}
	
	cl_ext_doc = xmlParseFile(cl_ext_filename);
    	if (cl_ext_doc == NULL)
    	{
            sk_message(outputprefs, SKOUT_VERBOSE, SKOUT_QUIET, "(remove_docs_from_content_list)",_("wrong extended content list file %s\n"), cl_ext_filename);
            continue;
    	}


	remove_doc_from_content_list(cl_doc->children, id_tab, start, end);
	remove_doc_from_content_list(cl_ext_doc->children, id_tab, start, end);    
	
	xmlSaveFile(cl_filename, cl_doc);
	xmlFreeDoc(cl_doc);
	xmlSaveFile(cl_ext_filename, cl_ext_doc);
	xmlFreeDoc(cl_ext_doc);

    }
 }
Example #2
0
TEG_STATUS xmlscores_save( PLIST_ENTRY pL_orig )
{
	xmlDocPtr doc;
	xmlNodePtr child;
	PLIST_ENTRY pL = pL_orig->Flink;
	char filename[512];

	PSCORES pS;

	doc = xmlNewDoc((xmlChar*)"1.0");

	child = xmlNewDocRawNode( doc, NULL, (xmlChar*)"teg_scores", NULL );

	/* whats the difference between xmlNewDocRawNode & SetRootElement */
	xmlDocSetRootElement( doc, child );

	while( !IsListEmpty( pL_orig ) && (pL != pL_orig) ) {
		pS = (PSCORES) pL;

		xmlscores_add( child, pS );

		pL = LIST_NEXT(pL);
	}


	snprintf( filename, sizeof(filename)-1,"%s/%s/server_scores.xml",g_get_home_dir(),TEG_DIRRC);
	filename[ sizeof(filename)-1 ] = 0;

	xmlSaveFile( filename , doc );

	return TEG_STATUS_SUCCESS;
}
Example #3
0
/*delete one level xml node*/
int delete_eag_onelevel(char *fpath,char *node_name,char *attribute,char *ruler)
{
	xmlDocPtr pdoc = NULL;

	xmlNodePtr pcurnode = NULL;
	char *psfilename;

	int flag=-1;

	psfilename = fpath;

	pdoc = xmlReadFile(psfilename,"utf-8",256);  

	if(NULL == pdoc)
	{
		return 1;
	}

	pcurnode = xmlDocGetRootElement(pdoc); 

	pcurnode = pcurnode->xmlChildrenNode;  

    xmlNodePtr propNodePtr = pcurnode;
	
	while (NULL != pcurnode)
	{			

		if (!xmlStrcmp(pcurnode->name, BAD_CAST node_name))    
		{

         propNodePtr = pcurnode;	

		   xmlChar* szAttr = xmlGetProp(propNodePtr,BAD_CAST attribute);  

		   if(!xmlStrcmp(szAttr,BAD_CAST ruler))  
		   {     
		            
					xmlNodePtr tempNode;				  		   

					tempNode = pcurnode->next;  

					xmlUnlinkNode(pcurnode);

					xmlFreeNode(pcurnode);

					pcurnode = tempNode;			 

					flag=0;

					continue;
			}
		   xmlFree(szAttr);
		}        
		pcurnode = pcurnode->next; 

	}	  

	xmlSaveFile(fpath,pdoc); 
	return flag;
}
bool TasksetWriter::write(const std::string& filename, vector<Task*>& taskset) const {
    xmlDocPtr doc;
    tDebug() << "Writing Taskset to XML file: " << filename;

    xmlTextWriterPtr writer;
    writer = xmlNewTextWriterDoc(&doc, 0);
    xmlTextWriterSetIndent(writer, 1);
    if (xmlTextWriterSetIndentString(writer, (const xmlChar*) "  ") != 0) {
        tError() << "Fehler beim Setzen des Einrueckens!";
    }

    xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL);

    xmlTextWriterWriteComment(writer, (xmlChar*) "Hier kommen die Tasks");

    xmlTextWriterStartElement(writer, (xmlChar*) "taskset");
    xmlTextWriterWriteAttributeNS(writer, (xmlChar*) "xsi", (xmlChar*) "schemaLocation", (xmlChar*) "http://www.w3.org/2001/XMLSchema-instance", (xmlChar*) "http://www.tmsxmlns.com taskset.xsd");
    xmlTextWriterWriteAttribute(writer, (xmlChar*) "xmlns", (xmlChar*) "http://www.tmsxmlns.com");

    xmlTextWriterWriteRaw(writer, (xmlChar*) "\n");

    for (size_t i = 0; i < taskset.size(); i++) {
        xmlTextWriterWriteRaw(writer, (xmlChar*) "\n");
        //taskset[i]->write(writer);
        taskset[i]->writeToXML(writer);
        xmlTextWriterWriteRaw(writer, (xmlChar*) "\n");
    }

    xmlTextWriterEndElement(writer); // close TaskSet

    xmlTextWriterEndDocument(writer);
    xmlFreeTextWriter(writer);
    xmlSaveFile(filename.c_str(), doc);

    xmlNodePtr cur = xmlDocGetRootElement(doc);
    if (cur == NULL) {
        tError() << "Empty document.";
        xmlFreeDoc(doc);
        return false;
    }
    if (xmlStrcmp(cur->name, (const xmlChar *) "taskset")) {
        tError() << "Document of the wrong type, root node != taskset";
        xmlFreeDoc(doc);
        return false;
    }

    if (isValid(doc) > 0) {
        tDebug() << "Written document is valid";

    } else {
        tError() << "Written document is invalid";
        xmlFreeDoc(doc);
        return false;
    }

    xmlFreeDoc(doc);

    return true;

}
/* Populate the preset with the current values in sliders, and save it to
 * disk */
static void preset_save(xmlDoc *preset, GtkWidget *slider_band[NUM_BANDS])
{
        gint i;
        gchar *gain;
        gchar *band_number;
        gchar *preset_fullname;
        xmlNode *child_node;
        xmlNode *root_node;

        /* Create nodes with band values */
        root_node = xmlNewDocNode(preset, NULL, BAD_CAST XML_NODE_EQUALIZER,
                                  NULL);
        xmlDocSetRootElement(preset, root_node);
        for (i = 0; i < NUM_BANDS; i++) {
                gain = g_strdup_printf(
                        "%.1f",
                        gtk_range_get_value(GTK_RANGE(slider_band[i])));
                band_number = g_strdup_printf("%d", i);
                child_node = xmlNewChild(root_node, NULL,
                                         BAD_CAST XML_NODE_BAND,
                                         BAD_CAST gain);
                xmlSetProp(child_node, BAD_CAST XML_PROP_BAND_NUMBER,
                           BAD_CAST band_number);
                g_free(gain);
                g_free(band_number);
        }

        preset_fullname = g_strdup_printf ("%s/%s", HOME_PRESETS, preset->name);
        xmlSaveFile(preset_fullname, preset);
        g_free(preset_fullname);
}
Example #6
0
bool SACONFIG_API xml_SaveFile(char const * configFile, xml_doc_info * doc)
{
	bool bRet = false;
	int count = 10;
	if(configFile == NULL) 
		return bRet;

	if(doc == NULL)
		return bRet;

	if(!access(configFile, F_OK))
	{
		while(access(configFile, W_OK))
		{
			if(count <= 0)
				return bRet;
			count--;
			usleep(500*1000);
		}
	}
	if(xmlSaveFile(configFile, doc->doc)>0)
		bRet = true;

	return bRet;
}
bool CCDictionarySaver::save2Plist(CCDictionary* pDict, const char* filename)
{
    do
    {
        xmlDocPtr xmlDoc = xmlNewDoc(BAD_CAST"1.0");
        CC_BREAK_IF(!xmlDoc);
        CC_BREAK_IF(!pDict);
        CC_BREAK_IF(!filename);
        
        xmlNodePtr root = xmlNewNode(NULL, ROOT_NODE_NAME);
        CC_BREAK_IF(!root);
        
        xmlNewProp(root, ROOT_PLIST_PROP, ROOT_PLIST_VERSION);
        
        CC_BREAK_IF(!saveDictionary(pDict, root));
        
        // not sure how to check the return value
        xmlDocSetRootElement(xmlDoc, root);
        
        CC_BREAK_IF(!xmlSaveFile(filename, xmlDoc));
        
        xmlFreeDoc(xmlDoc);
        return true;
    } while (false);
    
    return false;
}
Example #8
0
static int saveSBOLDocument(const char* filename) {
	int invalid = 0;
	if (!isValidSBOL(OUTPUT)) {
		invalid = 1;
		printf("WARNING: %s is not valid SBOL. Saving anyway.\n", filename);
	}
	int written = xmlSaveFile(filename, OUTPUT);
	return (int) invalid || written == -1;
}
Example #9
0
bool House::save()
{
	xmlDocPtr doc;
	xmlNodePtr root, tmp;
	xmlMutexLock(xmlmutex);

	doc = xmlNewDoc((const xmlChar*)"1.0");
	doc->children = xmlNewDocNode(doc, NULL, (const xmlChar*)"house", NULL);
    root = doc->children;

	std::stringstream sb;
	tmp = xmlNewNode(NULL, (const xmlChar*)"frontdoor");
	sb << frontDoor.x; xmlSetProp(tmp, (const xmlChar*) "x", (const xmlChar*)sb.str().c_str()); sb.str("");
	sb << frontDoor.y; xmlSetProp(tmp, (const xmlChar*) "y", (const xmlChar*)sb.str().c_str()); sb.str("");
	sb << frontDoor.z; xmlSetProp(tmp, (const xmlChar*) "z", (const xmlChar*)sb.str().c_str()); sb.str("");
	xmlAddChild(root, tmp);

	tmp = xmlNewNode(NULL, (const xmlChar*)"owner");
	xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)owner.c_str());
	xmlAddChild(root, tmp);

	for (size_t i = 0; i < subOwners.size(); i++)
	{
		tmp = xmlNewNode(NULL, (const xmlChar*)"subowner");
		xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)subOwners[i].c_str());
		xmlAddChild(root, tmp);
	}

	for (size_t i = 0; i < guests.size(); i++)
	{
		tmp = xmlNewNode(NULL, (const xmlChar*)"guest");
		xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)guests[i].c_str());
		xmlAddChild(root, tmp);
	}

	DoorOwnersMap::const_iterator iter = doorOwners.begin();
	while (iter != doorOwners.end())
	{
		Position pos = iter->first;
		for (size_t i = 0; i < iter->second.size(); i++)
		{
			tmp = xmlNewNode(NULL, (const xmlChar*)"doorowner");	// TODO: optimize
			sb << pos.x; xmlSetProp(tmp, (const xmlChar*) "x", (const xmlChar*)sb.str().c_str()); sb.str("");
			sb << pos.y; xmlSetProp(tmp, (const xmlChar*) "y", (const xmlChar*)sb.str().c_str()); sb.str("");
			sb << pos.z; xmlSetProp(tmp, (const xmlChar*) "z", (const xmlChar*)sb.str().c_str()); sb.str("");
			xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)iter->second[i].c_str());
			xmlAddChild(root, tmp);
		}
		++iter;
	}

	xmlSaveFile(file.c_str(), doc);
    xmlFreeDoc(doc);
	xmlMutexUnlock(xmlmutex);
	return true;
}
Example #10
0
void gabor_mag_face_node_data_stack_output_file(GrmGui* gui){
  xmlDocPtr doc;
  char* fname;
  doc= gabor_mag_stack_data_convert_to_xml(gui, &gui->face_node_data_stack);
  
  xmlDocDump(stdout, doc);/* debug_write */
  fname= (char*)gtk_entry_get_text((GtkEntry*)gui->file_io_gui.output_file_entry);

  xmlSaveFile(fname, doc);
  printf("save xml data to %s\n", fname);
}
Example #11
0
int XmlParser::saveAsFile(const char * filename)
{
	int ret = xmlSaveFile(filename, xmlDoc_);
	if(ret < 0)
	{
		return -1;
	}
	else
	{
		return 0;
	}
}
Example #12
0
bool SaveXmlCallback(const char *dest_filename, void *param)
{
    xmlDocPtr doc = param;

    //saving xml to file
    if (xmlSaveFile(dest_filename, doc) == -1)
    {
        CfOut(OUTPUT_LEVEL_ERROR, "xmlSaveFile", "Failed to write xml document to file %s after editing\n", dest_filename);
        return false;
    }

    return true;
}
Example #13
0
bool SaveXmlCallback(const char *dest_filename, void *param)
{
    xmlDocPtr doc = param;

    //saving xml to file
    if (xmlSaveFile(dest_filename, doc) == -1)
    {
        Log(LOG_LEVEL_ERR, "Failed to write xml document to file '%s' after editing. (xmlSaveFile: %s)", dest_filename, GetErrorStr());
        return false;
    }

    return true;
}
Example #14
0
/*/add xml node , property  one level*/
int add_eag_node_attr(char *fpath,char * node_name,char *attribute,char *ruler)
{
	 xmlDocPtr pdoc = NULL;

	 xmlNodePtr pcurnode_f = NULL; 
	 xmlNodePtr pcurnode = NULL; 

	 char *psfilename;
     psfilename = fpath;

	 int flag=0;

	 pdoc = xmlReadFile(psfilename,"utf-8",256); 
	 
	  if(NULL == pdoc)
	  {
	     return 1;
	  }

	  pcurnode_f = xmlDocGetRootElement(pdoc);  

	  pcurnode = pcurnode_f->xmlChildrenNode;  

	  while (NULL != pcurnode)
	  {			
	                        
	          if (!xmlStrcmp(pcurnode->name, BAD_CAST node_name))                
	          {
					xmlChar *value;
					value = xmlGetProp(pcurnode, (const xmlChar *)attribute);
					if(strcmp(ruler,(char*)value)==0)
					{
							flag = 1;
					}
					xmlFree(value);
			  }        
			 pcurnode = pcurnode->next; 
	                    
	  }

    if(flag==0)
	{
	    xmlNodePtr node = xmlNewNode(NULL, BAD_CAST node_name);
		xmlSetProp(node, BAD_CAST attribute, BAD_CAST ruler);
		xmlAddChild(pcurnode_f, node);

	}
	
    xmlSaveFile(fpath,pdoc); 
	return flag;
}
Example #15
0
/** \param[in] fileNameString Export XML tree to this fileNameString. 
   \retval RET_OK No problemo, XML tree saved to a file.
   \retval RET_FILENAME2LONG FileName is too long > MAX_PATH.
   \retval RET_CANNOTSAVE Cannot save to the XML file.*/
long FevenData::getDatasToFile( char* fileNameString)
{
  if( strlen( fileNameString) > MAX_PATH)      // Exit the famous overflow bug
	return RET_FILENAME2LONG;

  setMetaEvenDatasToXml();

  long ret = xmlSaveFile( fileName, doc);

  if( ret == -1)
    return RET_CANNOTSAVE;
  else
    return RET_OK;
}
Example #16
0
static void set_openbox_theme (const char *theme)
{
	const char *session_name;
	char *user_config_file, *fname;
	int count;

	// construct the file path
	session_name = g_getenv ("DESKTOP_SESSION");
	if (!session_name) session_name = DEFAULT_SES;
	fname = g_strconcat (g_ascii_strdown (session_name, -1), "-rc.xml", NULL);
	user_config_file = g_build_filename (g_get_user_config_dir (), "openbox/", fname, NULL);
	g_free (fname);

	// read in data from XML file
	xmlInitParser ();
	LIBXML_TEST_VERSION
	xmlDocPtr xDoc = xmlParseFile (user_config_file);
	if (xDoc == NULL)
	{
		g_free (user_config_file);
		return;
	}

	xmlXPathContextPtr xpathCtx = xmlXPathNewContext (xDoc);
	xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression ((xmlChar *) "/*[local-name()='openbox_config']/*[local-name()='theme']", xpathCtx);

	// update relevant nodes with new values
	for (count = 0; count < xpathObj->nodesetval->nodeNr; count++)
	{
		xmlNode *node = xpathObj->nodesetval->nodeTab[count];
		xmlAttr *attr = node->properties;
		xmlNode *cur_node = NULL;
		for (cur_node = node->children; cur_node; cur_node = cur_node->next)
		{
			if (cur_node->type == XML_ELEMENT_NODE)
			{
				if (!strcmp (cur_node->name, "name")) xmlNodeSetContent (cur_node, theme);
			}
		}
	}

	// cleanup XML
	xmlXPathFreeObject (xpathObj);
	xmlXPathFreeContext (xpathCtx);
	xmlSaveFile (user_config_file, xDoc);
	xmlFreeDoc (xDoc);
	xmlCleanupParser ();

	g_free (user_config_file);
}
Example #17
0
void CSearchProfileList::Save(CString filename)
{
	xmlDocPtr doc = xmlNewDoc((xmlChar*)&PROFILES_VERSION);
	xmlNodePtr root = xmlNewNode(0, (xmlChar*)&PROFILES_NAME);
	xmlDocSetRootElement(doc, root);
	POSITION p = GetHeadPosition();
	while (p) {
		CSearchProfile* prof = (CSearchProfile*)GetNext(p);
		xmlNodePtr profile = xmlNewChild(root, 0, (xmlChar*)&PROFILE_NAME, 0);
		prof->Save(profile);
	}
	xmlSaveFile(filename, doc);
	xmlFreeDoc(doc);
}
Example #18
0
bool SaveXmlCallback(EvalContext *ctx, const char *dest_filename, const char *orig_filename, void *param, Attributes a, Promise *pp)
{
    xmlDocPtr doc = param;

    //saving xml to file
    if (xmlSaveFile(dest_filename, doc) == -1)
    {
        cfPS(ctx, OUTPUT_LEVEL_ERROR, CF_FAIL, "xmlSaveFile", pp, a, "Failed to write xml document to file %s after editing\n", dest_filename);
        return false;
    }

    cfPS(ctx, OUTPUT_LEVEL_INFORM, CF_CHG, "", pp, a, " -> Edited xml file %s \n", orig_filename);
    return true;
}
Example #19
0
static gboolean
bt_song_io_native_xml_save (gconstpointer const _self,
    const BtSong * const song, GError ** err)
{
  const BtSongIONativeXML *const self = BT_SONG_IO_NATIVE_XML (_self);
  gboolean result = FALSE;
  gchar *const file_name;

  g_object_get ((gpointer) self, "file-name", &file_name, NULL);
  GST_INFO ("native io xml will now save song to \"%s\"",
      file_name ? file_name : "data");

  xmlDocPtr const song_doc = xmlNewDoc (XML_CHAR_PTR ("1.0"));
  if (song_doc) {
    xmlNodePtr const root_node =
        bt_persistence_save (BT_PERSISTENCE (song), NULL);
    if (root_node) {
      xmlDocSetRootElement (song_doc, root_node);
      if (file_name) {
        if (xmlSaveFile (file_name, song_doc) != -1) {
          result = TRUE;
          GST_INFO ("xml saved okay");
        } else {
          GST_WARNING ("failed to write song file \"%s\"", file_name);
          g_set_error_literal (err, G_IO_ERROR, g_io_error_from_errno (errno),
              g_strerror (errno));
        }
      } else {
        xmlChar *mem;
        guint len;
        gpointer data;

        xmlDocDumpMemory (song_doc, &mem, (int *) &len);
        data = g_memdup (mem, len);
        xmlFree (mem);
        g_object_set ((gpointer) self, "data", data, "data-len", len, NULL);
      }
    } else {
      g_set_error (err, G_IO_ERROR, G_IO_ERROR_FAILED,
          "Failed to serialize XML doc.");
    }
  } else {
    g_set_error (err, G_IO_ERROR, G_IO_ERROR_FAILED,
        "Failed to create XML doc.");
  }

  g_free (file_name);
  return result;
}
Example #20
0
void mysave(void)
{
    g_return_if_fail(teidoc);
    int ret = xmlSaveFile(selected_filename, teidoc);
    if(ret==-1)
    {
        mystatus(_("Saving to %s failed."), selected_filename);
    }

    if(file_modified)
    {
        file_modified = FALSE;
        on_file_modified_changed();
    }

    mystatus(_("Saved."));
}
Example #21
0
void kbd_table_save(const char * filename, kbd_table_t * keys, int len)
  {
  char * tmp_string;
  xmlDocPtr  xml_doc;
  xmlNodePtr node;
  xmlNodePtr xml_child;
  
  xmlNodePtr xml_key;
  int i;

  xml_doc = xmlNewDoc((xmlChar*)"1.0");
  node = xmlNewDocRawNode(xml_doc, NULL, (xmlChar*)root_name, NULL);
  xmlDocSetRootElement(xml_doc, node);
  
  xmlAddChild(node, BG_XML_NEW_TEXT("\n"));
  
  for(i = 0; i < len; i++)
    {
    xml_key = xmlNewTextChild(node, NULL, (xmlChar*)key_name, NULL);
    
    xml_child =
      xmlNewTextChild(xml_key, NULL, (xmlChar*)scancode_name, NULL);
    tmp_string = bg_sprintf("%d", keys[i].scancode);
    xmlAddChild(xml_child, BG_XML_NEW_TEXT(tmp_string));
    free(tmp_string);
    
    if(keys[i].modifiers)
      {
      xml_child =
        xmlNewTextChild(xml_key, NULL, (xmlChar*)modifiers_name, NULL);
      xmlAddChild(xml_child, BG_XML_NEW_TEXT(keys[i].modifiers));
      }
    if(keys[i].command)
      {
      xml_child =
        xmlNewTextChild(xml_key, NULL, (xmlChar*)command_name, NULL);
      xmlAddChild(xml_child, BG_XML_NEW_TEXT(keys[i].command));
      }
    xmlAddChild(node, BG_XML_NEW_TEXT("\n"));
    }
  
  xmlSaveFile(filename, xml_doc);
  
  xmlFreeDoc(xml_doc);
  }
Example #22
0
static gboolean
prepare_desc (gchar *name)
{
        GError *error = NULL;

        doc = gupnp_xml_doc_new_from_path (DATA_DIR "/" DESCRIPTION_DOC,
                                           &error);
        if (doc == NULL) {
                g_critical ("Unable to load the XML description file: %s",
                            error->message);

                g_error_free (error);

                return FALSE;
        }

        if (name && (strlen(name) > 0)) {
                /* set the friendlyName in the xmlDoc */
                init_friendly_name (name);
        }

        /* create and set the UUID in the xmlDoc */
        init_uuid ();

        /* saving the xml file to the temporal location with the uuid name */
        desc_location = g_strdup_printf ("%s/gupnp-network-light-%s.xml",
                                         g_get_tmp_dir (),
                                         uuid);
        g_assert (desc_location != NULL);

        if (xmlSaveFile (desc_location, doc->doc) < 0) {
                g_print ("Error saving description file to %s.\n",
                         desc_location);

                g_free (desc_location);
                g_object_unref (doc);

                return FALSE;
        }

        return TRUE;
}
Example #23
0
int main()
{
    xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0");
    xmlNodePtr root_node = xmlNewNode(NULL, BAD_CAST"root");

    //设置根节点
    xmlDocSetRootElement(doc, root_node);

    //在根结点中创建节点
    xmlNewTextChild(root_node, NULL, BAD_CAST"newNode1",
            BAD_CAST"newNode1 content");
    xmlNewTextChild(root_node, NULL, BAD_CAST"newNode2",
            BAD_CAST"newNode2 content");
    xmlNewTextChild(root_node, NULL, BAD_CAST"newNode3",
            BAD_CAST"newNode3 content");

    //创建一个节点,设置其内容和属性,然后加入根节点
    xmlNodePtr node = xmlNewNode(NULL, BAD_CAST"node2");
    xmlNodePtr content = xmlNewText(BAD_CAST"NODE_CONTENT");
    xmlAddChild(root_node, node);
    xmlAddChild(node, content);
    xmlNewProp(node, BAD_CAST"attribute", BAD_CAST"yes");

    //创建一个儿子及孙子节点
    node = xmlNewNode(NULL, BAD_CAST"son");
    xmlAddChild(root_node, node);

    xmlNodePtr grandson = xmlNewNode(NULL, BAD_CAST"grandson");
    xmlAddChild(node, grandson);
    //xmlAddChild(grandson, xmlNewText(BAD_CAST"This is a grandson node"));

    //存储xml文档
    int nRel = xmlSaveFile("CreatedXml.xml", doc);

    if (-1 != nRel)
    {
        printf("一个XML文档被创建,写入%d个字节\n", nRel);
    }
    xmlFreeDoc(doc);
    return 0;
}
Example #24
0
int main()
{
	xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0");
	xmlNodePtr root_node = xmlNewNode(NULL, BAD_CAST"root");

	xmlDocSetRootElement(doc, root_node);

	xmlNodePtr node1 = xmlNewNode(NULL, BAD_CAST"node1");
	xmlNodePtr node2 = xmlNewNode(NULL, BAD_CAST"node2");
	xmlNodePtr node3 = xmlNewNode(NULL, BAD_CAST"node3");

	xmlAddChild(root_node, node1);
	xmlAddChild(root_node, node2);
	xmlAddChild(node2, node3);

	int nRel = xmlSaveFile("example.xml", doc);
	if (nRel != -1) {
		printf("save succeed.\n");
	}

	xmlFreeDoc(doc);
	return 1;
}
Example #25
0
static void save_obconf_settings (void)
{
	const char *session_name;
	char *user_config_file, *c, *font, *fname;
	int count;
	const gchar *size = NULL, *bold = NULL, *italic = NULL;

	// construct the file path
	session_name = g_getenv ("DESKTOP_SESSION");
	if (!session_name) session_name = DEFAULT_SES;
	fname = g_strconcat (g_ascii_strdown (session_name, -1), "-rc.xml", NULL);
	user_config_file = g_build_filename (g_get_user_config_dir (), "openbox/", fname, NULL);
	g_free (fname);

	// set the font description variables for XML from the font name
	font = g_strdup (desktop_font);
	while ((c = strrchr (font, ' ')))
	{
		if (!bold && !italic && !size && atoi (c + 1))
			size = c + 1;
		else if (!bold && !italic && !g_ascii_strcasecmp (c + 1, "italic"))
			italic = c + 1;
		else if (!bold && !g_ascii_strcasecmp (c + 1, "bold"))
			bold = c + 1;
		else break;
		*c = '\0';
	}
	if (!bold) bold = "Normal";
	if (!italic) italic = "Normal";

	// read in data from XML file
	xmlInitParser ();
	LIBXML_TEST_VERSION
	xmlDocPtr xDoc = xmlParseFile (user_config_file);
	if (xDoc == NULL)
	{
		g_free (font);
		g_free (user_config_file);
		return;
	}

	xmlXPathContextPtr xpathCtx = xmlXPathNewContext (xDoc);
	xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression ((xmlChar *) "/*[local-name()='openbox_config']/*[local-name()='theme']/*[local-name()='font']", xpathCtx);

	// update relevant nodes with new values
	for (count = 0; count < xpathObj->nodesetval->nodeNr; count++)
	{
		xmlNode *node = xpathObj->nodesetval->nodeTab[count];
		xmlAttr *attr = node->properties;
		xmlNode *cur_node = NULL;
		for (cur_node = node->children; cur_node; cur_node = cur_node->next)
		{
			if (cur_node->type == XML_ELEMENT_NODE)
			{
				if (!strcmp (cur_node->name, "name")) xmlNodeSetContent (cur_node, font);
				if (!strcmp (cur_node->name, "size")) xmlNodeSetContent (cur_node, size);
				if (!strcmp (cur_node->name, "weight")) xmlNodeSetContent (cur_node, bold);
				if (!strcmp (cur_node->name, "slant"))	xmlNodeSetContent (cur_node, italic);
			}
		}
	}

	// cleanup XML
	xmlXPathFreeObject (xpathObj);
	xmlXPathFreeContext (xpathCtx);
	xmlSaveFile (user_config_file, xDoc);
	xmlFreeDoc (xDoc);
	xmlCleanupParser ();

	g_free (font);
	g_free (user_config_file);
}
Example #26
0
static void check_themes (void)
{
	const char *session_name, *ret;
	char *user_config_file, *cptr, *nptr, *fname;
	GKeyFile *kf;
	GError *err;
	int count;

	orig_lxsession_theme = "";
	orig_openbox_theme = "";

	// construct the file path for lxsession settings
	session_name = g_getenv ("DESKTOP_SESSION");
	if (!session_name) session_name = DEFAULT_SES;
	user_config_file = g_build_filename (g_get_user_config_dir (), "lxsession/", session_name, "/desktop.conf", NULL);

	// read in data from file to a key file structure
	kf = g_key_file_new ();
	if (g_key_file_load_from_file (kf, user_config_file, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL))
	{
		// get data from the key file
		err = NULL;
		ret = g_key_file_get_string (kf, "GTK", "sNet/ThemeName", &err);
		if (err == NULL) orig_lxsession_theme = ret;
	}

	// construct the file path for openbox settings
	fname = g_strconcat (g_ascii_strdown (session_name, -1), "-rc.xml", NULL);
	user_config_file = g_build_filename (g_get_user_config_dir (), "openbox/", fname, NULL);
	g_free (fname);

	// read in data from XML file
	xmlInitParser ();
	LIBXML_TEST_VERSION
	xmlDocPtr xDoc = xmlParseFile (user_config_file);
	if (xDoc)
	{
		xmlXPathContextPtr xpathCtx = xmlXPathNewContext (xDoc);
		xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression ((xmlChar *) "/*[local-name()='openbox_config']/*[local-name()='theme']", xpathCtx);

		// find relevant node and read value
		for (count = 0; count < xpathObj->nodesetval->nodeNr; count++)
		{
			xmlNode *node = xpathObj->nodesetval->nodeTab[count];
			xmlAttr *attr = node->properties;
			xmlNode *cur_node = NULL;
			for (cur_node = node->children; cur_node; cur_node = cur_node->next)
			{
				if (cur_node->type == XML_ELEMENT_NODE)
				{
					if (!strcmp (cur_node->name, "name"))
						orig_openbox_theme = xmlNodeGetContent (cur_node);
				}
			}
		}

		// cleanup XML
		xmlXPathFreeObject (xpathObj);
		xmlXPathFreeContext (xpathCtx);
		xmlSaveFile (user_config_file, xDoc);
		xmlFreeDoc (xDoc);
		xmlCleanupParser ();
	}

	g_free (user_config_file);

	// set the new themes if needed
	if (strcmp ("PiX", orig_lxsession_theme))
	{
		set_lxsession_theme ("PiX");
		if (needs_refresh) system (RELOAD_LXSESSION);
	}
	if (strcmp ("PiX", orig_openbox_theme))
	{
		set_openbox_theme ("PiX");
		system (RELOAD_OPENBOX);
	}
}
Example #27
0
void DumpXML()
{
  xmlSaveFile( "XMLDump.xml", doc );
}
Example #28
0
void login_func(int newsockfd,char * log)
{
	char login[256];
	char password[256];
	int n;
	char id[256];

	xmlDoc         *doc = NULL;
	xmlNode        *root_element = NULL;
	const char     *Filename = "users.xml";
	doc = xmlReadFile(Filename, NULL, 0);

	n = write(newsockfd,"Hello, print you login and password\n",36);
	bzero(login,256);
	bzero(password,256);
	n = read( newsockfd,login,255 );
	if (n < 0)
	{
		perror("ERROR reading from socket");
		exit(1);
	}
	n=write(newsockfd,"OK",2);
	n = read( newsockfd,password,255 );
	if (n < 0)
	{
		perror("ERROR reading from socket");
		exit(1);
	}

	if (doc == NULL)
	{
		printf("error: could not parse file %s\n", Filename);
	}
	else
	{
		if(!strncmp(login,"exit",4))
			exit(1);

		root_element = xmlDocGetRootElement(doc);
		bzero(id,256);
		login[strlen(login)-1] = 0;
		//login[strlen(login)-1] = 0;
		//password[strlen(password)-1] = 0;
		password[strlen(password)-1] = 0;
	    search_user(root_element,login,password,id);
	    if(id[0] == 0)
	    {
	    	printf("Invalid login --%s-- and password --%s-- \n Retry write you login and password\n",login,password);
	    	write(newsockfd,"OK",5);
	    	login_func(newsockfd,login);
	    }
	    else
	    {
	    	write(newsockfd,"next",5);
	    	search_new_topics(login,newsockfd);
	    	root_element = xmlDocGetRootElement(doc);
	    	on_off_user(root_element,login,1);
	    	xmlSaveFile(Filename,doc);
	    	strcpy(log,login);
	    	write(newsockfd,"next",5);
	    }

	    xmlFreeDoc(doc);
	}

	xmlCleanupParser();

	return;
}
Example #29
0
void start_work(int newsockfd)
{

	int  n;
	xmlDoc         *doc = NULL;
	xmlNode        *root_element = NULL;
	const char     *TopicFilename = "topics.xml";
	const char     *UserFilename = "users.xml";
	char buffer[256];
	char id[6];
	char login[100];

	bzero(login,100);
	    login_func(newsockfd,login);
	    strcpy(usersthr.login[usersthr.count],login);
	    usersthr.count++;
	    bzero(buffer,256);
	    strcpy(buffer,"next\n");
	    n=write(newsockfd,buffer,7);

	    while(1)
	    {
	    	bzero(buffer,256);
	    	strcpy(buffer,"next\n");
			n=write(newsockfd,buffer,7);
	    	//printf("next\n");
			bzero(buffer,256);
			n = read( newsockfd,buffer,255 );
			//printf("Buffer :%s\n",buffer);
			if (n < 0)
			{
				perror("ERROR reading from socket");
				exit(1);
			}
			if(!strncmp(buffer,"topics",6))
			{
				print_topic(buffer,newsockfd);
				//n = write(newsockfd,buffer,255);
			}
			if(!strncmp(buffer,"online",6))
			{
				doc = xmlReadFile(UserFilename, NULL, 0);
				if (doc == NULL)
				{
					printf("error: could not parse file %s\n", UserFilename);
					n = write(newsockfd,"Error\n",6);
				}
				else
				{
				    root_element = xmlDocGetRootElement(doc);
				    search_online_user(root_element,newsockfd);
				    xmlFreeDoc(doc);
				}
				xmlCleanupParser();
			}
			if(!strncmp(buffer,"show",4))
			{
				bzero(id,6);
				for(n=5;n<10;n++)
					id[n-5]=buffer[n];
			    doc = xmlReadFile(TopicFilename, NULL, 0);
			    if (doc == NULL)
			    {
			        printf("error: could not parse file %s\n", TopicFilename);
			        n = write(newsockfd,"Error\n",6);
			    }
			    else
			    {
	                root_element = xmlDocGetRootElement(doc);
	                fnp_post_by_id(root_element,id,newsockfd);
	                xmlFreeDoc(doc);
	            }
		        xmlCleanupParser();

		        doc = xmlReadFile(UserFilename, NULL, 0);
		        if (doc == NULL)
		        {
		             printf("error: could not parse file %s\n", UserFilename);
		             n = write(newsockfd,"Error\n",6);
		        }
		        else
		        {
		             root_element = xmlDocGetRootElement(doc);
		             add_see_topic(root_element,login,id);
		             xmlSaveFile(UserFilename,doc);
		             xmlFreeDoc(doc);
		        }
		       	xmlCleanupParser();
			}
			if(!strncmp(buffer,"exit",4))
			{
				bzero(buffer,256);
				strncpy(buffer,"exit\n",6);
				n = write(newsockfd,buffer,255);
				doc = xmlReadFile(UserFilename, NULL, 0);
				if (doc == NULL)
				{
					printf("error: could not parse file %s\n", UserFilename);
					n = write(newsockfd,"Error\n",6);
				}
				else
				{
				    root_element = xmlDocGetRootElement(doc);
				    on_off_user(root_element,login,0);
				    xmlSaveFile(UserFilename,doc);
					xmlFreeDoc(doc);
				}
				xmlCleanupParser();
				return;
			}
			if(!strncmp(buffer,"add",3))
			{
				doc = xmlReadFile(TopicFilename, NULL, 0);
				if (doc == NULL)
				{
					printf("error: could not parse file %s\n", TopicFilename);
					n = write(newsockfd,"Error\n",6);
				}
				else
				{
				    root_element = xmlDocGetRootElement(doc);
				    add_new_topic(root_element,newsockfd,login);
				    xmlSaveFile(TopicFilename,doc);
					xmlFreeDoc(doc);
				}
				xmlCleanupParser();
			}
			else
			{
				n=write(newsockfd,"OK",2);
			}
			/* Write a response to the client */
			if (n < 0)
			{
				perror("ERROR writing to socket");
				exit(1);
			}
	    }
}
Example #30
0
//mod xml node
int mod_eag_node(char * fpath,char * node_name,char *attribute,char *ruler,char * content,char *newc)
{
		xmlDocPtr pdoc = NULL;

		xmlNodePtr pcurnode = NULL;

		xmlNodePtr design_node = NULL;

		pdoc = xmlReadFile(fpath,"utf-8",256);  

		if(NULL == pdoc)
		{
			return 1;
		}

        int if_second_flag=0,if_second_null=0;
		
		pcurnode = xmlDocGetRootElement(pdoc); 

		pcurnode = pcurnode->xmlChildrenNode; 

		while (NULL != pcurnode)
	    {			

			if (!xmlStrcmp(pcurnode->name, BAD_CAST node_name))           
			{
					
					xmlChar* szAttr = xmlGetProp(pcurnode,BAD_CAST attribute);  

					if(!xmlStrcmp(szAttr,BAD_CAST ruler))
					{		
						xmlNodePtr childPtr = pcurnode; 
						childPtr=childPtr->children;
					
						while(childPtr !=NULL)
						{	 
						    if_second_null=1;
							if ((!xmlStrcmp(childPtr->name, BAD_CAST content)))
							{
 								xmlNodeSetContent(childPtr, BAD_CAST  newc); 
								if_second_flag=0;
								break;
								 
							}
							else
							{
							    if_second_flag=1;
								design_node=pcurnode;
								
							}

							childPtr = childPtr->next;
						}
						if(if_second_null == 0)
						{
                            if_second_flag=1;
							design_node=pcurnode;
						}
					}

					xmlFree(szAttr);
			}        
			pcurnode = pcurnode->next; 

	    }	  
		if(if_second_flag==1)
		{

			   xmlNodePtr node = xmlNewNode(NULL,BAD_CAST content);    

               xmlAddChild(design_node,node);
                     
               xmlNodePtr content1 = xmlNewText(BAD_CAST newc);
                     
               xmlAddChild(node,content1);
			   design_node=NULL;
	
	    }
		 
		xmlSaveFile(fpath,pdoc);  
		return if_second_flag;
}