1. 程式人生 > >[XML文件解析]libxml2對XML檔案的建立、解析、查詢、修改

[XML文件解析]libxml2對XML檔案的建立、解析、查詢、修改

xmlXPathObjectPtr get_nodeset(xmlDocPtr doc, const xmlChar *xpath) { xmlXPathContextPtr context; xmlXPathObjectPtr result; context = xmlXPathNewContext(doc); if (context == NULL) { printf("context is NULL\n"); return NULL; } result = xmlXPathEvalExpression(xpath, context); xmlXPathFreeContext(context); if (result == NULL) { printf("xmlXPathEvalExpression return NULL\n"); return NULL; } if (xmlXPathNodeSetIsEmpty(result->nodesetval)) { xmlXPathFreeObject(result); printf("nodeset is empty\n"); return NULL; } return result; } 在doc指向的XML文件中查詢滿足xpath表示式條件的節點,返回滿足這一條件的節點集合查詢條件xpath的寫法參見xpath相關資料。在查詢完畢獲取結果集後,就可以通過返回的 xmlXPathObjectPtr 結構訪問該節點: 示例4: xmlChar *xpath = ("/root/node/[@key='keyword']"); xmlXPathObjectPtr app_result = get_nodeset(doc,xpath); if (app_result == NULL) { printf("app_result is NULL\n"); return; } int i = 0; xmlChar *value; if(app_result) { xmlNodeSetPtr nodeset = app_result->nodesetval; for (i=0; i < nodeset->nodeNr; i++) { cur = nodeset->nodeTab[i]; cur = cur->xmlChildrenNode; while(cur!=NULL) { value = xmlGetProp(cur,(const xmlChar *)"key"); if (value != NULL) { printf("value: %s\n\n", d_ConvertCharset("utf-8", "GBK", (char *)value)); xmlFree(value); } value = xmlNodeGetContent(cur); if (value != NULL) { printf("value: %s\n\n", d_ConvertCharset("utf-8", "GBK", (char *)value)); xmlFree(value); } } } xmlXPathFreeObject (app_result); }

相關推薦

[XML解析]libxml2XML檔案建立解析查詢修改

xmlXPathObjectPtr get_nodeset(xmlDocPtr doc, const xmlChar *xpath) { xmlXPathContextPtr context; xmlXPathObjectPtr result; context = xmlXP

UTF-8編碼的xml帶頭部信息,用XmlDocument解析出錯問題

進制 mage nbsp 信息 分享 正常 img .com 16進制 1.使用UE查看文件,切換到16進制編輯。 前面三位 EF BB BF 是UTF-8編碼的表示。 前面兩位是:FF FE 表示是Unicode編碼 3C是小於符號(<)的AS

解析xml,並將xml中的資料拼接成insert語句

education.xml的內容是: <?xml version="1.0" encoding="utf-8"?> <Msg> <Head>   <Id>20140529100039</Id>   <Name&

XML中引入外部DTD檔案

XML文件通過使用DOCTYPE宣告語句(文件型別定義語句)來指明它所遵循的DTD檔案, DOCTYPE宣告語句緊跟在XML文件宣告語句後面,有兩種格式: 1.<!DOCTYPE 文件型別名稱 SYSTEM  "DTD文件的URL"> 2.<!DOCTYP

關於xmlspyxml Schema校驗xml,生成指定xml格式資料的操作

對傳入xml格式的資料,往往需要轉換成指定格式的資料,這時候需要xml Schema來進行實現。傳入報文如下:Xml Schema準換模板:使用xmlSpy進行驗證,轉換後的模板為:關於xmlSpy的使用:1.將輸入xml文件和轉換xslt模板在xmlSpy中開啟2.顯示介面

MyBatis之Mapper XML 詳解(四)-JDBC 類型和嵌套查詢

調用 表格 outer model sele 復雜 普通 全局配置 當前 支持的 JDBC 類型為了未來的參考,MyBatis 通過包含的 jdbcType 枚舉型,支持下面的 JDBC 類型。 BITFLOATCHARTIMESTAMPOTHERUNDEFINEDTINY

java中用jdom建立xml/將資料寫入XML

1 import java.io.FileNotFoundException; 2 3 import java.io.FileOutputStream; 4 import java.io.IOException; 5 6 import org.jdom.Attribute; 7 imp

Mybatis中的Mapper接口和XML裏的SQL是如何建立關系的?

根據 找到 bean 動態sql val 規範 apc 其中 接口 一、解析XML 首先,Mybatis在初始化SqlSessionFactoryBean的時候,找到mapperLocations路徑去解析裏面所有的XML文件,這裏我們重點關註兩部分。 1、創建S

sax解析xml,封裝到象中

XP test xmlparse AI set version clas args java 創建User.java類 public class User { private String id; private String name; pr

使用pull方式和sax方式xml進行解析

tostring 需要 nts tag .com version thp response pri 這是我自己設置的xml文件 用一下方式獲取它的內容 try{ OkHttpClient client = new OkHttpClient(); Request

DOM,SAX,JDOM,DOM4J四種方法解析XML的分析

文件加載 四種方法 結束 要求 每次 xml文件 基於 擴展方法 四種 ---恢復內容開始--- 1、DOM   與平臺無關的官方解析方式   DOM是一次性把xml文件加載到內存中,形成一個節點樹   對內存有要求 2、SAX   java提供的基於事件驅動的解

XML解析】(1)Java下使用JAXP中的DOM解析方式XML進行解析

關於JAXP、DOM、SAX: 何為JAXP? JAXP(JavaApi for Xml Programming) – sun公司的一套操作XML的API。 JAXP中分為三種解析方式: DOM解析、SAX解析、StAX

dom解析方式xml進行操作

<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8" standalone="no"?><書架> <書> <

libxml2解析xml舉例

轉自:http://blog.csdn.net/sky_qing/article/details/7165010           http://blog.chinaunix.net/uid-20680966-id-3475787.html ===============

【轉載】JAVAXML的讀寫(有具體的代碼和解析

導入 處理 讀寫 一個 掃描 表示 for xml ray .html 原文:https://www.cnblogs.com/yangliguo/p/7398996.html XML 指可擴展標記語言(EXtensible Markup Language),是獨立於軟件和硬

java解析xml練習——通過應用包名獲取應用圖標即其他信息(基於魅族應用商店)

fin vma tdm row con smartd enter music close 1、解析包名數據文件(txt文件),並生成包名數組: package jsouphtml; import java.io.BufferedReader; import j

處理】xml SAX解析

student 內容 訪問 sets display xtend style hide news SAX的全稱是Simple APIs for XML,也即XML簡單應用程序接口。 與DOM不同,SAX提供的訪問模式是一種順序模式,這是一種快速讀寫XML數據的方式。 當使用

2 怎樣解析XML或字符串

ica 代碼 clas books con value title 例如 parse 1 引用XML文件 2 使用XMLReader解析文本字符串 3 使用XMLReader方法讀取XML數據 詳細代碼實現例如以下: //初始化一個XML字符串 String xml

java實現xml讀取並保存到

數據封裝 itl imp get return 配置文件 targe dom4j xml配置 首先淺聊一下解析xml的四種方式: 1.DOM方式:有缺點但是這個缺點卻也是他的優點。下面詳細介紹:

【U1結業機試題】新聞內容管理系統:解析XML讀取Html模版生成網頁

repl att not 一個 class 新的 create hashmap exception 一、作業要求: 1.在xml文件中創建新聞節點news,包含標題、作者、日期、正文等信息 2.創建HTML模板文件 3.讀取xml中所有新聞信息,並使用新聞信息替換模板文件中