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可以設定按標準在非常短的時間裡完成配