使用SAX解析xml檔案

2021-07-27 05:06:19 字數 2575 閱讀 7845

解析xml檔案有好幾種方法,包括有:dom、jdom、sax解析、demo4j 等等

本篇主要講解sax是如何解析xml檔案的。

專案結構如下:

新建乙個parserutil類,繼承自defaulthandler,並重寫五個方法:startdocument()、startelement、characters()、endelement、enddocument()

public class parserutil extends defaulthandler

//開始解析某個節點時呼叫

@override

public void startelement(string uri, string localname, string qname, attributes attributes) throws saxexception

//獲取節點內容時呼叫

@override

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

//完成某個節點解析時呼叫

@override

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

//完成整個xml解析時呼叫

@override

public void enddocument() throws saxexception

}

在專案下建立乙個data.xml檔案,作為解析源使用:

像、這種結構的xml檔案稱為elementnode

<?xml version="1.0" encoding="utf-8"?>

1tom212

jerry203

iris

22

根據data.xml的構成方式,parserutil重寫父類方法的具體實現如下:

public class parserutil extends defaulthandler

@override

public void startelement(string uri, string localname, string qname, attributes attributes) throws saxexception

@override

public void characters(char ch, int start, int length) throws saxexception else if (nodename.equals("name")) else if (nodename.equals("age")) }

@override

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

@override

public void enddocument() throws saxexception

}

saxparser類:

public class saxpaser

is.close();

br.close();

return sb.tostring();

} catch (filenotfoundexception e) catch (ioexception e)

return null; }

/*** 使用sax解析xml檔案

* @param args

*/public static void parserxmlwtihsax(string xmldata) catch (saxexception | parserconfigurationexception e) catch (ioexception e) }

public static void main(string args)

}

程式執行結果:

***開始解析***

id:1

name:tom

age:21

id:2

name:jerry

age:20

id:3

name:iris

age:22

***解析完成***

注意:在解析xml過程博主遇到了乙個奇怪的問題,startelement()、endelement()方法中,通過localname匹配節點名稱失敗,通過system.out.println(localname)檢視,結果什麼都沒輸出。在網上搜尋一通之後,終於找到問題了,原因是不同計算機的執行環境有可能不一樣,導致localname的值為空。如果通過localname獲取不到解析結果,請嘗試使用qname匹配節點名稱,獲取解析結果。

SAX解析xml檔案

public class xmlsaxactivity extends activity class mycontenthandlerlistener implements onclicklistener catch exception e public class downloadhelper c...

xml檔案解析SAX

size large xml檔案解析 xml檔案解析有四種方式,color blue 1.dom生成和解析xml文件 sax是基於事件流的解析 2.sax生成和解析xml文件 基於xml文件樹結構的解析 3.dom4j生成和解析xml文件 4.jdom生成和解析xml color 本文章用第一種方法...

解析XML檔案(SAX方式解析XML)

解析xml檔案 sax方式解析xml 對xml檔案解析有四種方法 dom sax jdom dom4j 現著重講一下sax解析xml檔案。1 通過一定的方式獲取檔名 獲得檔案路徑 string xmlfilepath ticanserviceaccess.getsystemsupportservic...