1. 程式人生 > >使用SAX解析將xml的檔案內容結構儲存到java物件中

使用SAX解析將xml的檔案內容結構儲存到java物件中

Java使用Sax解析xml檔案中,我們介紹瞭如何用SAX解析xml檔案,接下來我們繼續學習如何將一個xml檔案的內容結構儲存到一個java例項物件中

一、xml檔案如下

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
	<book id="156">
		<name>計算機網路</name>
		<author>謝希仁</author>
		<price>39</price>
		<year>2013</year>
	</book>
	<book id="234">
		<name>計算機作業系統</name>
		<author>佚名</author>
		<price>40</price>
		<year>2013</year>
		<edition>第四版</edition>
	</book>
	<book id="367">
		<name>計算機組成原理</name>
		<price>35</price>
		<year>2013</year>
		<edition>第三版</edition>
	</book>
</bookstore>

二、首先,我們要想寫一個與xml中的book節點結構相同的實體類Book
public class Book {
	private String id;
	private String name;
	private String author;
	private String price;
	private String year;
	private String edition;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAuthor() {
		return author;
	}

	public void setAuthor(String author) {
		this.author = author;
	}

	public String getPrice() {
		return price;
	}

	public void setPrice(String price) {
		this.price = price;
	}

	public String getYear() {
		return year;
	}

	public void setYear(String year) {
		this.year = year;
	}

	public String getEdition() {
		return edition;
	}

	public void setEdition(String edition) {
		this.edition = edition;
	}

	@Override
	public String toString() {
		return "Book [id=" + id + ", name=" + name + ", author=" + author + ", price=" + price + ", year=" + year
				+ ", edition=" + edition + "]";
	}

}


三、編寫DefaultHandler類

使用全域性變數來實現不同函式之間的物件共享

public class MyHandler extends DefaultHandler {
	private String value = null;
	private List<Book> bookList = new ArrayList<>();
	private Book book = null;

	@Override
	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
		super.startElement(uri, localName, qName, attributes);
		if ("book".equals(qName)) {
			book = new Book();
			String id = attributes.getValue("id");
			book.setId(id);
		}
	}

	@Override
	public void characters(char[] ch, int start, int length) throws SAXException {
		super.characters(ch, start, length);
		value = new String(ch, start, length);

	}

	@Override
	public void endElement(String uri, String localName, String qName) throws SAXException {
		super.endElement(uri, localName, qName);
		switch (qName) {
		case "book":
			bookList.add(book);
			book = null;
			break;
		case "name":
			book.setName(value);
			break;
		case "author":
			book.setAuthor(value);
		case "year":
			book.setYear(value);
			break;
		case "edition":
			book.setEdition(<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">value</span><span style="font-size: 12px; font-family: Arial, Helvetica, sans-serif;">);</span>
			break;
		case "price":
			book.setPrice(value);
			break;
		}
	}

	public List<Book> getBookList() {
		return bookList;
	}

	public void setBookList(List<Book> bookList) {
		this.bookList = bookList;
	}

}

四、編寫主函式
public class SaxXmlParser {
	public static void main(String[] args) {
		// 建立SAXParserFactory例項
		SAXParserFactory spf = SAXParserFactory.newInstance();
		try {
			// 建立SAXParser例項
			SAXParser parser = spf.newSAXParser();
			// 建立DefaultHandler例項
			MyHandler handler = new MyHandler();
			// 開始解析
			parser.parse("book.xml", handler);
			for (Book book : handler.getBookList()) {
				System.out.println(book);
			}
		} catch (ParserConfigurationException | SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
五、控制檯輸出結果如下
Book [id=156, name=計算機網路, author=謝希仁, price=39, year=2013, edition=null]
Book [id=234, name=計算機作業系統, author=佚名, price=40, year=2013, edition=第四版]
Book [id=367, name=計算機組成原理, author=null, price=35, year=2013, edition=第三版]



相關推薦

使用SAX解析xml檔案內容結構儲存java物件

在Java使用Sax解析xml檔案中,我們介紹瞭如何用SAX解析xml檔案,接下來我們繼續學習如何將一個xml檔案的內容結構儲存到一個java例項物件中 一、xml檔案如下 <?xml version="1.0" encoding="UTF-8"?> <

使用SAX解析xml檔案儲存java物件

轉載自:http://blog.csdn.net/kingsonyoung/article/details/5199508 在Java使用Sax解析xml檔案中,我們介紹瞭如何用SAX解析xml檔案,接下來我們繼續學習如何將一個xml檔案的內容結構儲存到一個jav

Xml檔案遞迴載入到TreeView

  #region 【通過XDocument的方式將Xml檔案遞迴到TreeView控制元件中】   //讀取Xml檔案(XDocument)   //1.載入Xml檔案   XDocument  document=XDoument.Load("檔名稱.xml");   //2.先獲取跟節點

xmlSAX解析以及資料結構存入java物件

引用來自於:https://www.cnblogs.com/Qian123/p/5231303.html    https://blog.csdn.net/qq_36935755/article/details/77106322?utm_source=copy 

SAXBuilder解析xml檔案內容用於公共引數的校驗

SAXBuilder解析xml檔案內容xml檔案:<?xml version="1.0" encoding="UTF-8" ?><IELPM name="快捷支付-綁卡支付"><merIn><merchantNo length="16

按照一定的規格XML檔案內容批量匯入至資料庫

一、前臺點選按鈕 <li> asp:Button ID="ImportMember" runat="server" CssClass="btn btn-primary" Text="匯入會員" /> </li> 二、後臺按鈕宣告、編

Java如何解析某個目錄下xml檔案XML檔案轉換為報表資料來源?

在Java開發的報表工具FineReport中,假如在目錄下儲存了幾個XML檔案,希望把XML檔案轉換為報表資料來源,同時希望展示動態xml資料來源的效果,這時可通過引數的方式,動態獲取xml欄位中的值再作為報表資料來源。Northwind.xml記錄資料格式如下:<?

如何xml檔案轉化為Bitmap

一、獲取windownwidth int windowWidth = MyApplication.getWindowWidth(); 二、將佈局檔案轉化成Bitmap public Bitmap getScrollViewBitmap(RelativeLayout relativeLay

XML的寫入_dom4j新增、刪除、修改Xml檔案內容

XML的寫入_dom4j新增、刪除、修改Xml檔案內容 【工程截圖】 【person.xml】準備一個xml檔案 <?xml version="1.0" encoding="UTF-8"?> <students> <student id="8888

XML檔案寫入文件

public static void main(String[] args) throws Exception { //建立一個空的Document物件 Document doc = DocumentHelper.createDocument(); //建立一個根元素 Element

Java之讀取XML檔案內容

下面是我的Persons.xml檔案內容: <?xml version="1.0" encoding="utf-8"?> <persons> <person id="0

使用SQLXMLXML檔案對映到關係資料庫

1. My Computer-->System Properties-->Advanced-->Environment Variables add D:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin/ to pa

golang 解析xml檔案

golang 解析很大的xml in, err := os.Open(os.Args[1]) defer in.Close() decoder := xml.NewDecoder(in) var t xml.Token var text bool for t

php接收base64編碼的檔案內容儲存

<?php header('Content-type:text/html;charset=utf-8'); //讀取圖片檔案,轉換成base64編碼格式 $image_file = './face_21.png'; $image_info = getimagesize($image_file);

通過pythonxml檔案轉換成html檔案

#資料型別的轉換 def main():    maxwidth = 100  #用於規範字段的長度    print_start()    count=0    while True:        try:            line =input()            if count == 0

修改tomcat的server.xml檔案後,eclipse在某些情況下會自動還原server.xml檔案內容

原因:在eclipse裡整合新增tomcat時,eclipse會自動儲存tomcat的配置檔案。 解決辦法如下: 在eclipse中,刪除配置的tomcat,然後修改tomcat目錄conf檔案下的s

java 讀取本地excel 檔案excel內容轉換成java物件

操作工具 eclipse + maven 1. java操作excel所使用的jar包 poi-ooxml        <dependency>     <groupId>org.apache.poi</groupId>     <

Java&Xml教程(三)使用DOM方式修改XML檔案內容

DOM解析方式也可用於修改XML資料,我們可以使用它完成新增元素、刪除元素、修改元素值、修改元素屬性等操作。 我們的XML檔案,內容如下: employee.xml <?xml version="1.0" encoding="UTF-8" sta

TinyXML讀取XML檔案內容 [大三四八九月實習]

1 XML檔案的節點與元素 為什麼要探討這個問題呢,因為在TinyXML類的成員函式中,有指向下一個結點的成員函式(NextSibling)有指向下一個元素的成員函式(NextSiblingElement),元素在XML檔案基本結構中基本已經形成概念,現在又冒出一個結點。還

如何XML檔案匯入Excel

如下圖所示為一個規範的XML檔案,在Excel中可以將規範的XML檔案匯入到Excel成為規範的表格。具體有如下幾種方法: