1. 程式人生 > >XML學習總結(三)——SAXReader解析xml檔案資料

XML學習總結(三)——SAXReader解析xml檔案資料

第一種方式:

1. 加入jar包

注意

    1.1 xml檔案解析時編碼要一致(預設UTF-8),出現報錯可以在記事本中另存為來更改編碼格式。

     2.2 jar包兩個都需要。


2.gao.xml資料如下:

<?xml version="1.0" encoding="UTF-8"?>
<emps>
	<emp>
		<id>1</id>
		<name>張三</name>
		<age>26</age>
		<gender>男</gender>
		<salary>3000</salary>
	</emp>
	<emp>
		<id>2</id>
		<name>李四</name>
		<age>21</age>
		<gender>女</gender>
		<salary>2000</salary>
	</emp>
	<emp>
		<id>3</id>
		<name>王五</name>
		<age>28</age>
		<gender>女</gender>
		<salary>6500</salary>
	</emp>
	<emp>
		<id>4</id>
		<name>趙六</name>
		<age>28</age>
		<gender>男</gender>
		<salary>5500</salary>
	</emp>
	<emp>
		<id>5</id>
		<name>錢七</name>
		<age>53</age>
		<gender>男</gender>
		<salary>12000</salary>
	</emp>
	<cmp department="總經辦">
		<id>007</id>
		<name>董事長</name>
		<age>52</age>
		<gender>男</gender>
		<salary>100000</salary>
	</cmp>
</emps>

3.XmlDemo.java程式碼

package me.gorden.xml;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class XmlDemo {
	public static void main(String[] args) {
		try {
			// 建立SAXReader
			SAXReader reader = new SAXReader();
			//從xml檔案獲取資料  
			Document document = reader.read(new File("E:\\00_MeWockSpace\\MyEclipse 12\\xmlDemo\\src\\gao.xml"));
			// 獲取根節點 emps
			Element root = document.getRootElement();
			// 查詢指定節點名稱QName的所有子節點elements
			List<Element> list = root.elements("emp");  //得到所有emp元素
			System.out.println("list==>"+list);
			
			for (Element element : list) { //迴圈輸出全部emp的相關資訊  
				System.out.println("element.getName()==>"+element.getName());
				
				List<Element> list2 = element.elements(); //得到emp元素下的子元素
				
				for (Element e : list2) {  //遍歷emp元素下的子元素
					System.out.print(e.getName()+":");  //獲取子元素名稱
					System.out.print(e.getText()+" ");  //獲取子元素的文字值
				}
				 System.out.println();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

4.結果

list==>[[email protected] [Element: <emp attributes: []/>], [email protected] [Element: <emp attributes: []/>], [email protected] [Element: <emp attributes: []/>], [email protected] [Element: <emp attributes: []/>], [email protected] [Element: <emp attributes: []/>]]
element.getName()==>emp
id:1 name:張三 age:26 gender:男 salary:3000 
element.getName()==>emp
id:2 name:李四 age:21 gender:女 salary:2000 
element.getName()==>emp
id:3 name:王五 age:28 gender:女 salary:6500 
element.getName()==>emp
id:4 name:趙六 age:28 gender:男 salary:5500 
element.getName()==>emp
id:5 name:錢七 age:53 gender:男 salary:12000 

程式碼解析:
1、讀取xml資料
SAXReader可以通過多種方式讀取xml資料,並返回Document格式的物件。通過檢視原始碼,可以看出read()方法接收File,InputStream和URL等格式的引數來讀取相應的xml資料。在程式碼裡我演示了讀取xml文件和xml格式的字串兩種方式。當然,字串要根據相應的編碼轉成輸入流才能被SAXReader讀取。
2、解析xml資料
讀取到Document物件後,我們使用getRootElement()方法獲取根元素,返回的是一個Element物件。在本例中,該元素的name即為emps。
3、獲取子元素資料
獲取根元素後,便可以一層一層的去獲取他的子元素資訊。如果知道子元素的標籤名稱,便可以直接呼叫element("name")方法獲取該子元素。如果不知道子元素的名稱,或者想直接獲取該元素下的全部子元素,可以呼叫elements()方法獲取一個包括全部元素的list,然後進行下一步的處理。
4、輸出元素資訊
呼叫getName()方法獲取當前元素的元素名,attributeValue()獲取屬性名。如果當前元素沒有子元素,則呼叫getText()方法獲取元素值。

第二種方式:

1.ReadXml.java檔案和上面的不一樣,其餘的都是一樣的

package me.gorden.xml;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class ReadXml {
	public static void main(String[] args) throws DocumentException {
		File file = new File("E:\\00_MeWockSpace\\MyEclipse 12\\xmlDemo\\src\\gao.xml");
		
		System.out.println("file===>"+file);
		// 建立SAXReader
		SAXReader reader = new SAXReader();
		// 用SAXReader來讀取檔案,並轉換成Document
		Document document = reader.read(file);
		//用Document的selectNodes來讀取節點,返回list
		List<Object> list = document.selectNodes("/emps/emp/name");
		Element e = null;
		if(list.size()>0){
			e = (Element) list.get(0);
		}
		
		System.out.println("list.size()==>"+list.size());
		
		if(null != e){
			Object obj = e.getData();
			System.out.println("Element內容為:  "+obj);
		}else{
			System.out.println("Element內容為空");
		}
		
	}
}

2.結果

file===>E:\00_MeWockSpace\MyEclipse 12\xmlDemo\src\gao.xml
list.size()==>5
Element內容為:  張三

相關推薦

XML學習總結——SAXReader解析xml檔案資料

第一種方式:1. 加入jar包注意    1.1 xml檔案解析時編碼要一致(預設UTF-8),出現報錯可以在記事本中另存為來更改編碼格式。     2.2 jar包兩個都需要。2.gao.xml資料如下:<?xml version="1.0" encoding="UT

JSP學習總結

vol actor time 為什麽 pso ack sta instance 9.png 四、為什麽jsp就是servlet?   打開Tomcat服務器的work目錄,找到jsp文件翻譯的java文件。類聲明如下 package org.apache.jsp; im

springMVC學習總結數據綁定

springmvc core nts 循環 ack sta attribute servle 設置 springMVC學習總結(三)數據綁定 一、springMVC的數據綁定,常用綁定類型有: 1、servlet三大域對象: HttpServletRequest Http

JavaSE學習總結——Java語言編程練習、格式化字符與常量

數據 nts 編程 () 功能 替換 pri stream 第幾天 目錄 一、變量、常量、字面量 二、銀行利率為5%,問存款100美元5年的收益細節? 三、格式化 3.1、printf格式化輸出 3.2、String.format 3.2.1、日期類型 3.2.2、

springMVC學習總結 --springMVC重定向

form mit 簡單 訪問 intern dir html isp pack 根據springMVC學習總結(一) --springMVC搭建搭建項目 在com.myl.controller包下創建一個java類WebController。 在jsp子文件夾下創建一個視

OO學習總結

簡單 manager ets types mat UC requires represent 出現 規格化設計 軟件工程的重要目標之一是實現軟件開發過程各階段的自動化,軟件自動化的前提是形式化,包括軟件需求規格的形式化、軟件設計規格的形式化和 算法描述的形式化。 Z語言由牛

python學習總結,python的變量類型

變量 對象的引用 ict asr 字符串連接 number 包括 區別 通用 1.python中每個變量的申賦值都不需要類型聲明,每個變量在內存中創建都包括變量的標識、名稱和數據等信息。 2. 每個變量在使用前都必須賦值,變量賦值後該變量才會被創建。 3. 允許同時為多個變

[學習總結] python語言學習總結

函式閉包 定義 延伸了作用域的函式(能訪問定義體之外定義的非全域性變數 作用 共享變數的時候避免使用了不安全的全域性變數 允許將函式與某些資料關聯起來,類似於簡化版面向物件程式設計 相同程式碼每次生成的閉包,其延伸的作用域都彼此獨立(計數器,登錄檔) 函式的一部分行為在編寫時無法預知

微信開發學習總結——訊息管理2-接受普通訊息和被動回覆使用者訊息

上一節內容: 微信開發學習總結(三)——訊息管理(1) https://blog.csdn.net/qq_29914837/article/details/82903594 訊息管理具有的各個子模組功能,現在我們將一個詳細介紹如何使用 一、接受普通訊息介面介紹 1.1

微信開發學習總結——訊息管理1

上一節內容: 微信開發學習總結(二)——微信開發環境準備(2) https://blog.csdn.net/qq_29914837/article/details/82896861 接收普通訊息 當普通微信使用者向公眾賬號發訊息時,微信伺服器將POST訊息的XML資料包到開

c++學習總結——類與物件

一、心得感悟     c語言的課程學習後,開始c++的學習,首先就是學習類。在學習類時,類的使用與c語言有著極大的差別,一開始學習十分別扭。c語言的學習直接定義幾個形參、函式就可以寫程式了;而到了c++學習,關於類,首先必須定義類。具有相同性質和功能的東西構成的集合,通常歸成一

JAVASE8流庫Stream學習總結

3、聚合(終止流操作) 前面我們已經看到過如何建立流和轉換流了,現在是時候讓流終止,並返回些有用的東西給我們了,這個過程就叫做聚合, 也叫約簡。 一、Optional類 講到這個,我們先從 Optional類講起,什麼是Optional類,O

Linux 學習總結

一. yum 命令 1.列出所有可更新的軟體清單命令:yum check-update 2.更新所有軟體命令:yum update 3.僅安裝指定的軟體命令:yum install <package_name> 4.僅更新指定的軟體命令:yum update <package_nam

資料庫學習總結——新增、更新與刪除資料

新增、更新與刪除資料 新增資料 更新資料 刪除資料 新增資料 insert語句中指定欄位名 insert into 表名(欄位名1,欄位名2,…) values (值1,值2,…); 注意:欄位名與欄位值的順序,型別必須互相匹

強化學習學習總結——QLearning思維決策

一、思維決策構架  import numpy as np import pandas as pd class QLearningTable: # 初始化 def __init__(self, actions, learning_rate=0.01, rew

MyBatis學習總結——多表關聯查詢與動態SQL

一、多表關聯查詢 表與表之間有三種常見的關聯關係,分別是一對一,一對多與多對多關係,MyBatis直接提供一對一與一對多的關聯關係,可以通過間接的方式實現多對多關聯。 1.1、一對一關係 1.1.1、執行環境 假定一個員工(emp)擁有一個登入使用者(user),員工與使用者表之間是一對一關係:

Spring 學習筆記IOC之XML方式配置 第二回Bean節點屬性的配置

<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/X

Spring 學習筆記IOC之XML方式配置 第一回 javaBean的配置與獲取

IOC的兩種方式: XML方式 註解方式 XML方式 需要的jar包   spring-beans-4.3.3.RELEASE.jar spring-context-4.3.3.RELEASE.jar spring-context-support

MyBatis學習筆記mybatis-config.xml都有哪些配置之typeAliases與plugins

類型別名(typeAlicases) 在mybatis-config.xml配置檔案中加入類描述 <typeAliases> <typeAlias type="org.mybatis.example.User" alias="User" />

JAVA學習總結

Maven Maven是一個專案管理和綜合工具。Maven提供了開發人員構建一個完整的生命週期框架。開發團隊可以自動完成專案的基礎工具建設,Maven使用標準的目錄結構和預設構建生命週期。 在多個開發團隊環境時,Maven可以設定按標準在非常短的時間裡完成配