首頁 資料庫 mysql教程 libxml2实现xml文档的节点的修改

libxml2实现xml文档的节点的修改

Jun 07, 2016 pm 03:00 PM
Sky xml 修改 實現 文件 節點

其实在网上很容易能找到使用libxml2来对xml文档进行创建、解析、修改等。我着这里主要是就自己学习的libxml2修改xml文档的节点进行一个简单的总结,方便自己以后回顾。 下面给出我写的一个例子: /*********************************************************

 其实在网上很容易能找到使用libxml2来对xml文档进行创建、解析、修改等。我着这里主要是就自己学习的libxml2修改xml文档的节点进行一个简单的总结,方便自己以后回顾。

 

下面给出我写的一个例子:

/********************************************************************** 

                Copyright, 2011, **** Tech. Co., Ltd. 

                            All Rights Reserved 

----------------------------------------------------------------------- 

Project Code   : wlan 

File name      : modify_node.cpp 

Author         : Sky_qing 

Description    : 使用libxml2修改xml文档的节点

Function List: 

----------------------------------------------------------------------- 

History:  

Date            Author                 Modification 

2011-12-27     Sky_qing                created file

**********************************************************************/
#include <stdio.h>
#include "libxml/parser.h"
#include "libxml/tree.h"

int main(int argc, char* argv[])
{
	xmlDocPtr doc;				//定义解析文档指针
	xmlNodePtr curNode;			//定义节点指针(在各个节点之间移动)
	char* szDocName = argv[1];	//保存xml文档名,该文档名在运行程序到时候输入。
	//例如:编译格式为g++ modify_node.cpp -o modify_node -I /usr/local/include/libxml2/  -L /usr/local/lib -lxml2,生成可执行文件modify_node,运行时:./modify_node log4crc(此处log4crc为要修改的xml文档)

	printf("........start........\n");
    doc = xmlReadFile(szDocName, "utf-8", XML_PARSE_RECOVER); 	//解析文档
	if (NULL == doc)
	{
		fprintf(stderr, "Document not parsed successfully.\n");
		
		return -1;
	}

	curNode = xmlDocGetRootElement(doc);		//确定文档根元素
	if (NULL == curNode)
	{
		fprintf(stderr, "Empty Document.\n");
		xmlFreeDoc(doc);		//释放文件

		return -1;
	}

	if (xmlStrcmp(curNode->name, (const xmlChar*)"log4c"))	//确认根元素是否为“log4c”
	{
		fprintf(stderr, "Document of wrong type. root node != log4c");
		xmlFreeDoc(doc);

		return -1;
	}

	curNode = curNode->xmlChildrenNode;
	xmlNodePtr propNode = curNode;
	while (NULL != curNode)		//遍历所有节点
	{
		//获取名称为category的节点
		if (!xmlStrcmp(curNode->name, (const xmlChar*)"category"))
		{
			//查找带有属性name的节点
      		if (xmlHasProp(curNode, BAD_CAST "name"))
       		{
                propNode = curNode;
     		}

			//查找属性name为WLAN_Console的节点
    		xmlAttrPtr attrPtr = propNode->properties;
			while (NULL != attrPtr)		//遍历所有名称为category的节点
    		{
		   		if (!xmlStrcmp(attrPtr->name, (const xmlChar*)"name"))	//找到有name属性到节点
		   		{
					//查找属性为name的值的节点
					xmlChar* szPropity = xmlGetProp(propNode, (const xmlChar*)"name");
					if (!xmlStrcmp((const xmlChar*)szPropity, (const xmlChar*)"WLAN_Console"))
					{
						xmlAttrPtr setAttrPtr = propNode->properties;
						while (NULL != setAttrPtr)
						{
							//设置属性priority的值
							xmlSetProp(propNode, (const xmlChar*)"priority", (const xmlChar*)"debug");
			
							setAttrPtr = setAttrPtr->next;
						}
					}
		  		}
		   		attrPtr = attrPtr->next;
	   		}	
		}
		curNode = curNode->next;
	}
	
	//保存文档到原文档中
	xmlSaveFile("log4crc", doc);

	printf("...........OK............\n");

	return 0;
}</stdio.h>
登入後複製


编译和运行格式在代码中有。

 

参考文章:

http://blog.sina.com.cn/s/blog_669e9f6a0100sbql.html

http://wenku.baidu.com/view/02d0fdea172ded630b1cb61c.html

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
釘釘怎麼修改群組裡的個人名稱_釘釘修改群組個人名稱方法 釘釘怎麼修改群組裡的個人名稱_釘釘修改群組個人名稱方法 Mar 29, 2024 pm 08:41 PM

1.首先打開釘釘。 2.打開群組聊,點選右上角的三個點。 3.找到我在本群的暱稱。 4.點選進入即可修改儲存。

華為手機如何實現雙微信登入? 華為手機如何實現雙微信登入? Mar 24, 2024 am 11:27 AM

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

抖音藍V可以改名字嗎?企業抖音藍V號名稱修改步驟有哪些? 抖音藍V可以改名字嗎?企業抖音藍V號名稱修改步驟有哪些? Mar 22, 2024 pm 12:51 PM

抖音藍V認證是企業或品牌在抖音平台上的官方認證,有助於提升品牌形象和可信度。隨著企業發展策略的調整或品牌形象的更新,企業可能希望更改抖音藍V認證的名字。那麼,抖音藍V可以改名字嗎?答案是可以的。本文將詳細介紹企業抖音藍V號名稱修改的步驟。一、抖音藍V可以改名字嗎?抖音藍V帳號是可以改名字的。根據抖音官方規定,企業藍V認證帳號在滿足一定條件後,可以申請修改帳號名稱。一般來說,企業需要提供相關的證明資料,如營業執照、組織機構代碼證等,以證明修改名稱的合法性和必要性。二、企業抖音藍V號名稱修改步驟有哪

閒魚怎麼修改已發布商品地址位置 閒魚怎麼修改已發布商品地址位置 Mar 28, 2024 pm 03:36 PM

在閒魚平台發布商品時,用戶可以根據實際情況自訂設定寶貝的地理位置信息,這樣潛在買家就能更精準地掌握商品的具體所在地。一旦商品成功上架,若賣家的地理位置有所變動,也無需擔憂。閒魚平台特別提供了靈活且便捷的修改功能,那麼當我們想要修改已經發布產品的地址究竟該如何修改呢,這篇教程攻略就將為大家帶來詳細的步驟攻略介紹,希望能幫助到大家!閒魚怎麼修改發布產品地址? 1.打開閒魚,點擊我發布的,選擇商品,點擊編輯。 2、點選定位圖標,選擇需要設定的地址即可。

如何在華為手機上實現微信分身功能 如何在華為手機上實現微信分身功能 Mar 24, 2024 pm 06:03 PM

如何在華為手機上實現微信分身功能隨著社群軟體的普及和人們對隱私安全的日益重視,微信分身功能逐漸成為人們關注的焦點。微信分身功能可以幫助使用者在同一台手機上同時登入多個微信帳號,方便管理和使用。在華為手機上實現微信分身功能並不困難,只需要按照以下步驟操作即可。第一步:確保手機系統版本和微信版本符合要求首先,確保你的華為手機系統版本已更新至最新版本,以及微信App

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

詳解Word文件操作:將兩頁合併為一頁 詳解Word文件操作:將兩頁合併為一頁 Mar 26, 2024 am 08:18 AM

Word文件是我們日常工作和學習中使用頻率較高的應用程式之一。在處理文件時,有時會遇到需要將兩頁內容合併為一頁的情況。本文將詳細介紹在Word文件中如何將兩頁合併為一頁,幫助讀者更有效率地處理文件排版。在Word文件中,將兩頁合併為一頁的操作通常用於節省紙張和列印成本,或為了使文件更加緊湊和整潔。以下是合併兩頁為一頁的具體步驟:第一步:開啟需要操作的Word

如何使用 PHP 函數處理 XML 資料? 如何使用 PHP 函數處理 XML 資料? May 05, 2024 am 09:15 AM

使用PHPXML函數處理XML資料:解析XML資料:simplexml_load_file()和simplexml_load_string()載入XML檔案或字串。存取XML資料:利用SimpleXML物件的屬性和方法來取得元素名稱、屬性值和子元素。修改XML資料:使用addChild()和addAttribute()方法新增元素和屬性。序列化XML資料:asXML()方法將SimpleXML物件轉換為XML字串。實戰案例:解析產品饋送XML,提取產品信息,轉換並將其儲存到資料庫中。

See all articles