Stax處理XML(一)——基於游標的查詢
Stax處理XML,基於游標的查詢,關鍵在於:
使用XMLInputFactory建立XMLStreamReader,獲取了streamReader(游標)之後,(在while迴圈hasNext中)判斷節點型別,是否為開始、結束、文字節點,之後根據情況進行處理。
(1)測試一:輸出節點名稱和text值
/**
* 基於游標的查詢
* 輸出節點名稱和text值
*/
@Test
public void test01() {
XMLInputFactory factory = XMLInputFactory.newInstance();
InputStream is = null;
try {
//輸入流
is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
XMLStreamReader reader = factory.createXMLStreamReader(is);
while(reader.hasNext()) {
int type = reader.next();
//判斷節點型別,是否為開始、結束、文字節點,之後根據情況進行處理
if (type == XMLStreamConstants.START_ELEMENT) {
System.out.println(reader.getName());
} else if (type == XMLStreamConstants.CHARACTERS) {
System.out.println(reader.getText().trim());
} else if (type == XMLStreamConstants.END_ELEMENT) {
System.out.println("/" + reader.getName());
}
}
} catch (XMLStreamException e) {
e.printStackTrace();
} finally {
try {
if(is != null) is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
輸出結果:
bookstore
book
title
Everyday Italian
/title
author
Giada De Laurentiis
/author
year
2005
/year
price
30.00
/price
/book
book
...(此處省略)
/book
/bookstore
(2)測試二:輸出屬性,如果是book,就輸出category
/**
* 輸出屬性
* 如果是book,就輸出category
*/
@Test
public void test02() {
XMLInputFactory factory = XMLInputFactory.newInstance();
InputStream is = null;
try {
is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
XMLStreamReader reader = factory.createXMLStreamReader(is);
while(reader.hasNext()) {
int type = reader.next();
if (type == XMLStreamConstants.START_ELEMENT) {
String name = reader.getName().toString();
if (name.equals("book")) {
System.out.println(reader.getAttributeName(0) + ": " + reader.getAttributeValue(0));
}
}
}
} catch (XMLStreamException e) {
e.printStackTrace();
} finally {
try {
if(is != null) is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
輸出結果:
category: COOKING
category: CHILDREN
category: WEB
category: WEB
(3)測試三:輸出書的標題和價格
/**
* 輸出書的標題和價格
*/
@Test
public void test03() {
XMLInputFactory factory = XMLInputFactory.newInstance();
InputStream is = null;
try {
is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
XMLStreamReader reader = factory.createXMLStreamReader(is);
while(reader.hasNext()) {
int type = reader.next();
if (type == XMLStreamConstants.START_ELEMENT) {
String name = reader.getName().toString();
if (name.equals("title")) {
System.out.print(reader.getElementText() + ": ");
}
if (name.equals("price")) {
System.out.print(reader.getElementText() + "\n");
}
}
}
} catch (XMLStreamException e) {
e.printStackTrace();
} finally {
try {
if(is != null) is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
輸出結果:
Everyday Italian: 30.00
Harry Potter: 29.99
XQuery Kick Start: 49.99
Learning XML: 39.95
相關文章
- XML - StAX示例XML
- 關於 groupBy 分組查詢的分頁處理
- MySQL邏輯查詢處理MySql
- oracle 死鎖查詢處理Oracle
- MySQL 查詢處理 SQL查詢執行順序MySql
- MyBatis Like查詢處理%_符號MyBatis符號
- Oracle死鎖查詢及處理Oracle
- 一個慢查詢報警的簡單處理
- ORACLE 查詢語句處理過程(Oracle
- 查詢等待事件及處理指令碼事件指令碼
- 查詢處理的邏輯順序
- Android 滑鼠游標的圖形合成Android
- 控制input輸入框游標的位置
- 分享一下Sass處理的更高階媒體查詢
- 基於聯合查詢的注入
- 表死鎖查詢及處理辦法
- 大批次引數輸入查詢處理
- PostgreSQL在何處處理 sql查詢之六十六SQL
- Go xml檔案處理GoXML
- SAX處理XML例項XML
- xml處理的問題XML
- 推薦一個基於Ajax的查詢API網站API網站
- 通過xml處理sql語句時對小於號與大於號的處理轉換XMLSQL
- MySQL Case-information_schema檢視查詢慢處理一例MySqlORM
- count函式與order by子句一起查詢時報錯處理函式
- 一次併發處理過程, 基於 RedisRedis
- 如何處理 MySQL 萬用字元的模糊查詢MySql字元
- (十三)資料庫查詢處理之QueryExecution(2)資料庫
- Oracle 高水位查詢和處理方法彙總Oracle
- nodejs 連線 mysql 查詢事務處理NodeJSMySql
- library cache lock\pin的查詢與處理
- 【層次查詢】Hierarchical Queries之處理順序
- xsl中,對xml文件查詢的結果再次查詢XML
- 深入理解父遊標,子游標的概念
- 操作文字域內游標的jQuery程式碼jQuery
- 【大資料】SparkSql連線查詢中的謂詞下推處理(一)大資料SparkSQL
- LINQ系列:LINQ to XML查詢XML
- MyBatis SQL xml處理小於號與大於號正確的格式MyBatisSQLXML