XML 解析之 jaxp 解析器

2021-09-24 17:27:47 字數 3213 閱讀 2297

sax 解析: 採用事件驅動, 邊讀邊解析. 從上到下, 一行一行的解析, 解析到某乙個物件, 把物件返回.

xml 解析器

sax 解析使用到的類:

jaxp 解析器的 dom 方式解析 xml 檔案

documentbuilder 解析器類

documentbuilde***ctory 解析器工廠

使用 jaxp 解析器實現對 xml 文件的增刪改查

// 示例:

// xml 檔案

<?xml version="1.0" encoding="gbk"?>

zhangsan

20 lisi

32// 查詢: 查詢 xml 檔案中所有的 name 元素的值

/** 思路:

* 1. 建立解析器工廠

* 2. 根據解析器工廠建立解析器

* 3. 解析 xml 返回 document, 需要導包, org.w3c.dom.document

* 4. 使用 document 物件中的 getelementsbytagname() 方法, 獲取 nodelist 集合

* 5. 遍歷集合, 獲取每乙個 name 對應的值

*/public class testjaxp

}// 公升級版, 把獲取 document 物件封裝成方法,

// 只要對 xml 文件進行增刪改操作, 都需要回寫 xml , 因此回寫 xml 也封裝成乙個方法

public class jaxputils catch (exception e)

// 如果出現異常, 返回 null

return null;

}// 回寫 xml 操作

public static void xmltransform(document document, string path) catch(exception e)

}}// 刪除: 刪除 p1 下面的 male

public void rem***()

// 使用 jaxp 遍歷節點, 也就是把 xml 中的所有元素名稱列印出來

/** 思路: 使用遞迴實現遍歷

* 1. 得到根節點

* 2. 得到根節點的子節點

* 3. 得到根節點的子節點的子節點

*/public static void listelement(string path) throws exception

// 因為 node 是 document 的父介面

// list(document document) 公升級為 list(node node)

public static void list2(node node)

// 得到第一層子節點

nodelist list = node.getchildnodes();

// 遍歷 list

for(int i=0; ijaxp 解析器的 sax 方式解析 xml 檔案

sax 方式解析 xml 文件, 只能實現對文件的查詢操作,不能實現增刪改操作.

saxparser 解析器

saxparse***ctory 解析器工廠

使用 jaxp 的 sax 方式解析 xml 文件

// defaulthandler 說明

// 1. defaulthandler 中有三個方法: startelement, characters, endelement

// 2. 當解析到開始標籤時, 自動執行 startelement 方法,

// 3. 當解析到文字內容時, 自動執行 characters 方法

// 4. 當解析到標籤結束時, 自動執行 endelement 方法

// 示例:

// xml 檔案

<?xml version="1.0" encoding="gbk"?>

zhangsan

20 lisi

32// 需求一: 列印 xml 文件中所有元素

/** 思路:

* 1. 建立解析器工廠

* 2. 建立解析器

* 3. 執行 parse 方法

** 4. 自己建立乙個類, 繼承 defaulthandler

* 5. 重寫類裡面的三個方法

* /public class testjaxp

}// 列印整個文件的事件處理器

class mydefault2 extends defaulthandler

// 重寫 characters 方法

public void characters(char ch, int start, int length) throws saxexception

// 重寫 endelement 方法

public void endelement(string uri, string localname, string qname) throws saxexception

}// 獲取所有的 name 元素的值, 事件處理器

class mydefault3 extends defaulthandler

}// 重寫 characters 方法

public void characters(char ch, int start, int length) throws saxexception

}// 重寫 endelement 方法

public void endelement(string uri, string localname, string qname) throws saxexception}}

// 獲取第乙個 name 元素中的值

class mydefault3 extends defaulthandler

}// 重寫 characters 方法

public void characters(char ch, int start, int length) throws saxexception

}// 重寫 endelement 方法

public void endelement(string uri, string localname, string qname) throws saxexception}}

jaxp解析XML之SAX解析

sax解析原理 是事件驅動的xml解析處理方法,是基於事件驅動的。contenthandler文件處理器類中 常用事件方法 startdocument 文件開始事件時呼叫 enddocument 文件結束事件時呼叫 startelement 在每次sax解析器遇到元素的起始標記時被呼叫 charac...

pull解析器解析xml

利用pull解析xml檔案需要下面幾個步驟 1 獲取xmlpullparser物件。這裡有兩個方法 通過xmlpullparse ctory獲取xmlpullparser物件,或者直接使用xml.newpullparser 方法獲取。栗子如 一所示。2 通過xmlpullparser物件設定輸入流。...

XML解析 Jsoup解析器

jsoup快捷查詢方式 jsoup概念 跳轉到目錄 jsoup基本使用 提取碼 0uvi 獲取document物件 獲取對應標籤的element物件 獲取資料 public static void getfirstname throws exception jsoup中的物件 跳轉到目錄 獲取對應的...