jaxp的sax解析操作
xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<person>
<p1>
<name>aa</name>
<age>20</age>
</p1>
<p1>
<name>bb</name>
<age>30</age>
</p1>
</person>
java程式碼:
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
public class TestSax {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
/**
* 1.建立解析器工廠
* 2.建立解析器
* 3.執行parse
*
* 4.自己建立一個類,繼承DefaultHandler
* 5.重寫類裡面的三個方法
*/
//建立解析器工廠
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
//建立解析器
SAXParser saxParser = saxParserFactory.newSAXParser();
//執行parse
saxParser.parse("src/p1.xml", new MyDefault2());
}
}
//獲取所有name元素的值
//獲取第一個name元素的值
class MyDefault2 extends DefaultHandler{
//int idx = 1;
boolean flag = false;
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
//當flag是true的時候,表示解析到name元素
if(flag==true/*&&idx==1*/) {
System.out.println(new String(ch,start,length));
}
}
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if("name".equals(qName)) {
flag = false;
//idx++;
}
}
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
//判斷qName是否是name元素
if("name".equals(qName)) {
flag = true;
}
}
}
class MyDefault1 extends DefaultHandler{
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
System.out.print(new String(ch,start,length));
}
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
System.out.print("<"+qName+">");
}
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
System.out.print("<"+qName+">");
}
}
相關文章
- sax解析例子演示
- dom解析和sax解析的區別
- XML解析-最快的方式SAXXML
- 使用jaxp解析器dom方式對xml節點進行操作XML
- 使用JAXP對xml文件進行DOM解析基礎XML
- grant 操作硬解析
- 請利用SAX編寫程式解析Yahoo的XML格式的天氣預報,獲取天氣預報——python學習筆記XMLPython筆記
- java Integer中的方法解析(位操作)Java
- Androidxml資料的讀取和寫入(sax,pull,dom,xstream,jsoup)AndroidXMLJS
- java流的中間操作原始碼解析Java原始碼
- Mybatis:CRUD操作及配置解析MyBatis
- JS常用陣列操作全解析JS陣列
- 深度解析Django REST Framework 批量操作DjangoRESTFramework
- C#操作符??,?,?:功能解析C#
- show engine innodb status操作解析之一
- 解析Linux訊號集操作函式Linux函式
- Java 併發包原子操作類解析Java
- truncate操作消除ORACLE SEG壞塊解析Oracle
- MySQL備份與恢復操作解析MySql
- 解析IO操作InputStream、OutputStream、InputStreamReader OutputStreamWriter、BufferedReader BufferedWriter
- 使用python遠端操作linux過程解析PythonLinux
- 簡單易用的.NET免費開源RabbitMQ操作元件EasyNetQ解析MQ元件
- [Flutter必備]-Dart中的非同步與檔案操作全面解析FlutterDart非同步
- 【Mybatis原始碼解析】- JDBC連線資料庫的原理和操作MyBatis原始碼JDBC資料庫
- Spring-Boot-操作-Redis,三種方案全解析!SpringbootRedis
- 解析DELLR710伺服器遷移操作內容伺服器
- 使用SSH+SFTP操作終端全解析,告別XShellFTP
- 深入解析 Apache BookKeeper 系列:第二篇 — 寫操作原理Apache
- 【乾貨】js 陣列詳細操作方法及解析合集JS陣列
- Go 操作 Redis 的基本操作GoRedis
- C#解析Markdown文件,實現替換圖片連結操作C#
- OkHttp3.0解析 —— 從原始碼的角度談談發起網路請求時做的操作HTTP原始碼
- Redis系列(五):資料結構List雙向連結串列中基本操作操作命令和原始碼解析Redis資料結構原始碼
- ES6中Promise 承諾物件封裝非同步操作解析Promise物件封裝非同步
- [原始碼解析] PyTorch 分散式(11) ----- DistributedDataParallel 之 構建Reducer和Join操作原始碼PyTorch分散式Parallel
- 熟悉常用的Linux操作和Hadoop操作LinuxHadoop
- 庫的操作
- 表的操作