1. 程式人生 > >使用SAX解析將xml的檔案儲存為java物件

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

轉載自:http://blog.csdn.net/kingsonyoung/article/details/5199508

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

一、xml檔案如下

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <bookstore>
  3.     <bookid="156">
  4.         <name>計算機網路</name>
  5.         <author>謝希仁</
    author>
  6.         <price>39</price>
  7.         <year>2013</year>
  8.     </book>
  9.     <bookid="234">
  10.         <name>計算機作業系統</name>
  11.         <author>佚名</author>
  12.         <price>40</price>
  13.         <year>2013</year>
  14.         <edition>
    第四版</edition>
  15.     </book>
  16.     <bookid="367">
  17.         <name>計算機組成原理</name>
  18.         <price>35</price>
  19.         <year>2013</year>
  20.         <edition>第三版</edition>
  21.     </book>
  22. </bookstore>

二、首先,我們要想寫一個與xml中的book節點結構相同的實體類Book
  1. publicclass
     Book {  
  2.     private String id;  
  3.     private String name;  
  4.     private String author;  
  5.     private String price;  
  6.     private String year;  
  7.     private String edition;  
  8.     public String getId() {  
  9.         return id;  
  10.     }  
  11.     publicvoid setId(String id) {  
  12.         this.id = id;  
  13.     }  
  14.     public String getName() {  
  15.         return name;  
  16.     }  
  17.     publicvoid setName(String name) {  
  18.         this.name = name;  
  19.     }  
  20.     public String getAuthor() {  
  21.         return author;  
  22.     }  
  23.     publicvoid setAuthor(String author) {  
  24.         this.author = author;  
  25.     }  
  26.     public String getPrice() {  
  27.         return price;  
  28.     }  
  29.     publicvoid setPrice(String price) {  
  30.         this.price = price;  
  31.     }  
  32.     public String getYear() {  
  33.         return year;  
  34.     }  
  35.     publicvoid setYear(String year) {  
  36.         this.year = year;  
  37.     }  
  38.     public String getEdition() {  
  39.         return edition;  
  40.     }  
  41.     publicvoid setEdition(String edition) {  
  42.         this.edition = edition;  
  43.     }  
  44.     @Override
  45.     public String toString() {  
  46.         return"Book [id=" + id + ", name=" + name + ", author=" + author + ", price=" + price + ", year=" + year  
  47.                 + ", edition=" + edition + "]";  
  48.     }  
  49. }  


三、編寫DefaultHandler類

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

  1. publicclass MyHandler extends DefaultHandler {  
  2.     private String value = null;  
  3.     private List<Book> bookList = new ArrayList<>();  
  4.     private Book book = null;  
  5.     @Override
  6.     publicvoid startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {  
  7.         super.startElement(uri, localName, qName, attributes);  
  8.         if ("book".equals(qName)) {  
  9.             book = new Book();  
  10.             String id = attributes.getValue("id");  
  11.             book.setId(id);  
  12.         }  
  13.     }  
  14.     @Override
  15.     publicvoid characters(char[] ch, int start, int length) throws SAXException {  
  16.         super.characters(ch, start, length);  
  17.         value = new String(ch, start, length);  
  18.     }  
  19.     @Override
  20.     publicvoid endElement(String uri, String localName, String qName) throws SAXException {  
  21.         super.endElement(uri, localName, qName);  
  22.         switch (qName) {  
  23.         case"book":  
  24.             bookList.add(book);  
  25.             book = null;  
  26.             break;  
  27.         case"name":  
  28.             book.setName(value);  
  29.             break;  
  30.         case"author":  
  31.             book.setAuthor(value);  
  32.         case"year":  
  33.             book.setYear(value);  
  34.             break;  
  35.         case"edition":  
  36.             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>  
  37.             break;  
  38.         case

    相關推薦

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

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

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

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

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

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

    opencv3.3 該檔案包含不能在當前內碼表(936)中表示的字元。請檔案儲存 Unicode 格式以防止資料丟失

    VS2015 + opencv3.3 執行報錯: warning C4819: 該檔案包含不能在當前內碼表(936)中表示的字元。請將該檔案儲存為 Unicode 格式以防止資料丟失  error C2065: “ptr”: 未宣告的識別符號 error C2065: “ptr”:

    VS2017 報錯該檔案包含不能在當前內碼表(936)中表示的字元。請檔案儲存 Unicode 格式以防止資料丟失

    尤其程式碼是從linux平臺複製過來: 報錯如圖: 更有甚者基本函式都報錯: 當下檢查發現if else break case等基本函式並無問題時,報錯行數明顯不一致等一定要注意文件編碼格式, 最簡單的辦法是用notepad++,逐個將.

    《 warning C4819: 該檔案包含不能在當前內碼表(936)中表示的字元。請檔案儲存 Unicode 格式以防止資料丟失》

    問題描述 最近專案中添加了很多外部的.h和.cpp檔案,有可能是編碼格式不一樣,在生成解決方案時,輸出窗口出現了好多的warning C4819警告資訊,具體情況如下所示: warning C4819: 該檔案包含不能在當前內碼表(936)中表示的字元。 請將該檔案儲存為

    VS2017 warning C4819: 該檔案包含不能在當前內碼表(936)中表示的字元。請檔案儲存 Unicode 格式以防止資料丟失

    Visual Studio 2017出現warning C4819: 該檔案包含不能在當前內碼表(936)中表示的字元。請將該檔案儲存為 Unicode 格式以防止資料丟失 解決方案: 1.修改字元編碼格式 Visual Studio提供高階儲存選項功能,

    “該檔案包含不能在當前內碼表(936)中表示的字元,請檔案儲存 Unicode 格式以防止資料丟失”

    這個警告怎麼破?其實很簡單: 以VS2012為例,去除方法見下: ------------------------------------------- 影象處理開發資料、影象處理開發需求、

    opencv讀取視訊檔案,並視訊檔案儲存圖片

    #include <iostream> #include <windows.h> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp

    XML解析sax解析案例(二)使用sax解析xml文件封裝成物件

    Demo1類: import java.io.File; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /**

    利用nodejsxlsx檔案匯出json物件

    首先新建一個專案資料夾,命名任意然後在該資料夾下下載 node-xlsx  執行 npm install node-xlsx然後下載 ejsexcel npm install ejsexcel --sava然後編輯一個xlsx表格檔案,儲存到該資料夾下,命名 userList

    java解析xml檔案儲存資料庫

    package com.ziyun56.chpz.service.poi.util; import java.io.File; import java.util.Iterator; import java.util.List; import org.dom4j.Docu

    WINDOWS解決升級npm依賴包的bat檔案檔案儲存bat格式字尾,放node專案目錄執行

    @echo off & npm outdated --parseable --depth=0 >up.txt & for /f “delims=^” %%i in (up.txt) do ( for /f “delims=:” %%i in ("%%~ni") do (

    [Android] 一個當前螢幕儲存圖片檔案的類(簡單說就是抓屏)

    現在無論是應用,還是遊戲中,都經常會有分享的功能。分享,不僅要分享文字,也要分享應用或者遊戲的螢幕截圖,這樣才能做到圖文並茂,吸引到更多的使用者。想要做圖片的分享功能,首先就需要抓屏,將當前螢幕儲存為一個圖片檔案。下面就是一個將當前的Activity直接儲存為一個圖片檔案的類

    XMLString格式的XML檔案轉化成JAVA實體類

    1.問題: 如何將String型別的XML轉化成JAVA實體類? 2.原始碼: public class TestXML { @SuppressWarnings("unchecked") public static void main(

    座標系統儲存一個檔案.prj

    try { System.Windows.Forms.SaveFileDialog m_SaveFileDialog = new System.Windows.Forms.SaveFileDial

    使用ffmpegBMP圖片編碼x264視訊檔案,H264視訊儲存BMP圖片,yuv視訊檔案儲存圖片的程式碼

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #ifdef __cplusplus extern "C" { #endif #include

    java 後臺base64字串儲存圖片

    有效 package com; import java.io.FileInputStream; import java.io.FileOutputStream;   import java.io.IOException;   import java.io.InputSt

    運用pythonjson檔案儲存成csv檔案

    工具:  spyder ,codecs  ,pandas # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ #-*-coding:utf-8-*- import j

    簡單知識點例項之一:如何各個單一獲取的資料儲存陣列物件其取出

    一、將獲取的值存為陣列或陣列物件 (1)存為陣列(例如所有怪物的id值可以存為陣列) 是以逗號隔開的,建議用到存單個特定值時用(如光存id值時) <!DOCTYPE html> <html lang="en"> <head> <