XML解析之sax解析案例(二)使用sax解析把 xml文件封裝成物件
Demo1類:
import java.io.File; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /** * 使用sax解析把 xml文件封裝成物件 * @author APPle * */ public class Demo3 { public static void main(String[] args)throws Exception { SAXParser parser = SAXParserFactory.newInstance().newSAXParser(); MyDefaultHandler3 handler = new MyDefaultHandler3(); parser.parse(new File("./src/contact.xml"), handler); List<Contact> list = handler.getList(); for (Contact contact : list) { System.out.println(contact); } } }
MyDefaultHandler3類:
import java.util.ArrayList; import java.util.List; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * SAX處理程式 * @author APPle * */ public class MyDefaultHandler3 extends DefaultHandler { //儲存所有聯絡人物件 private List<Contact> list = new ArrayList<Contact>(); public List<Contact> getList(){ return list; } //儲存一個聯絡人資訊 private Contact contact; /** * 思路: * 1)建立Contact物件 * 2)把每個contact標籤內容存入到Contact物件 * 3)把Contact物件放入List中 */ //用於臨時儲存當前讀到的標籤名 private String curTag;//用於方法跨度使用變數。 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { curTag = qName; //讀取到contact的開始標籤建立Contact物件,這裡說明了什麼時候建立Content物件最合適。 if("contact".equals(qName)){ contact = new Contact(); //設定id值 contact.setId(attributes.getValue("id"));//根據指定名字獲取id值 } } @Override public void characters(char[] ch, int start, int length) throws SAXException { //當前文字內容 String content = new String(ch,start,length);//String類構造方法獲取到當前文字的額內容。 if("name".equals(curTag)){ contact.setName(content); } if("age".equals(curTag)){ contact.setAge(content); } if("phone".equals(curTag)){ contact.setPhone(content); } if("email".equals(curTag)){ contact.setEmail(content); } if("qq".equals(curTag)){ contact.setQq(content); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { //結束標籤後就設定null。這裡設定為null很重要。設定空是為了避免空格換行設定到物件的屬性中,空格換行進去了就把原來放進去的資料覆蓋掉。 curTag = null; //讀到Contact的結束標籤把content物件放入List中 if("contact".equals(qName)){ list.add(contact); } } }
相關推薦
XML解析之sax解析案例(二)使用sax解析把 xml文件封裝成物件
Demo1類: import java.io.File; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /**
企業分布式微服務雲SpringCloud SpringBoot mybatis (二)Spring Boot屬性配置文件詳解
public profile 功能 tps with oot oschina 基本 ava 相信很多人選擇Spring Boot主要是考慮到它既能兼顧Spring的強大功能,還能實現快速開發的便捷。我們在Spring Boot使用過程中,最直觀的感受就是沒有了原來自己整合S
Lucene7.2.1系列(二)luke使用及索引文件的基本操作
系列文章: luke入門 簡介: 下載地址:https://github.com/DmitryKey/luke/releases Luke是一個用於Lucene/Solr/Elasticsearch 搜尋引擎的,方便開發和診斷
使用Qt開發文字編輯器(二):標籤頁式文件實現
Qt中相關的類 標籤頁俗稱Tab頁,Qt提供了QTableWidget用於建立基於Tab頁式的文件。使用QTableWidget,我們可以很方便得新增和刪除Tab、設定和獲取Tab頁上面的文字,設定當前的Tab。 實現 MainWindow類中維護
Java眼中的XML---檔案讀取(二)SAX解析XML檔案
目錄 (一)SAX解析是什麼? (二)SAX解析和DOM解析的區別? (三)SAX方法解析XML的步驟 (四)SAX解析Java程式碼實現 (一)SAX解析是什麼? SAX(simple API for XML)是一種XML解析的
深入解析開源專案之Universal-Image-Loader(二)快取篇
Universal-Image-Loader 是一個優秀的圖片載入開源專案,Github地址在 (Github地址) ,很多童鞋都在自己的專案中用到了。優秀的專案從來都是把簡單留給開發者,把複雜封裝在框架內部。ImageLoader作為Github上S
android之解析包時出現錯誤(二)
這次的原因不同,再記錄下public class DownloadTask { /** * @param path下載地址 * @param filePath儲存路徑 * @param progressDialog進度條 * @return * @t
大資料之電話日誌分析callLog案例(二)
一、前端實現 -- 按照時間段查詢通話記錄 ----------------------------------------- 1.完善calllog的dao類calllog.class ----------------------------------------------
解析網頁自定義字型(二)
解析網頁自定義字型(二) 介紹 背景知識 TrueType字型 fontTools 字型檔案解析庫 xml.dom.minidom xml程式碼解析庫 matplotlib 繪圖工具包 pytesseract oc
動態記憶體分配實用案例(二)之複製字串
用動態分配記憶體製作一個字串的一份拷貝。注意:呼叫程式應該負責檢查這塊記憶體是否分配成功,這樣做允許程式以任何它所希望的方式對錯誤作出反應。 #nclude <stdlib.h> #include <string.h> char * strdup
爬蟲解析之xls檔案處理(附錄甘肅省爬蟲解析程式碼)
用jxl檔案處理xls表格。突然發現if迴圈真的是感受到了溫暖 package test; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOE
(二)從解析DTS到建立device_DTS的匹配和解析(結合原始碼)
kernel啟動流程_DTS解析(原始碼層面) 此篇部落格有很多參考其他文章的內容,由於參考內容繁雜,不一一標註角標了,在末尾會貼上所有參考部落格的link,如有侵權,請聯絡本人處理,謝謝。 深入,並且廣泛 -沉默犀牛 我認為作為初學者去學習kernel程式碼的一個
C# HTML解析工具HtmlAgilityPack使用例項(二)--Web頁面
一、使用XPath精確解析指定的Dom節點 XPath字串的簡單獲取方法,是在瀏覽器開發者工具中指定節點右鍵》“Copy XPath” 如圖 //載入Web 的頁面並解析內容 string rowP
Jetty9架構解析-Jetty配置及部署(二)
2.2. Jetty配置方式 除了Jetty配置及部署(一)介紹的命令列引數、ini和XML(Jetty IoC)檔案的預設配置方式外,Jetty也為我們提供了其它靈活的配置方案。 由於Jetty的伺服器物件(如Server、連結器、Context等)都
Vue 原始碼解析 - 例項化 Vue 前(二)
前言 上一篇文章,大概的講解了Vue例項化前的一些配置,如果沒有看到上一篇,通道在這裡:Vue 原始碼解析 - 例項化 Vue 前(一) 在上一篇的結尾,我說這一篇後著重講一下 defineReactive 這個方法,這個方法,其實就是大家可以在外面看見一些文章對 vue 實現資料雙向繫結原理的過程。
dubbo原始碼淺析(二)-標籤解析
前面瞭解了dubbo的外掛化機制之後,接下來進入正題,研究一下dubbo的核心原理,由於dubbo的功能配置較多,為了更高效的研讀程式碼,在閱讀的過程中儘量忽略一些細節,重點關注它的主幹流程,主幹瞭解清楚之後再去分析它的一些細節功能就更輕鬆了,否則容易陷入各種細
微信支付接入完全解析之Android客戶端(2)
前段時間在一個App中接入了微信支付功能,想來也穩定執行快一個月了,回頭想想自己接入微信支付時候踩過的坑,決定寫一篇自己當初想要搜尋的文章,文章準備分3篇完成。 第一篇:微信支付前期準備 第二篇:微信支付接入客戶端部分(以Android為例
爬蟲系列(二)——網頁解析Jsoup
Jsoup是一款Java的HTML解析器,可直接解析某個URL地址、HTML文字內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操作資料。
通俗地說決策樹演算法(二)例項解析
前情提要: 通俗地說決策樹演算法(一)基礎概念介紹 一. 概述 上一節,我們介紹了決策樹的一些基本概念,包括樹的基本知識以及資訊熵的相關內容,那麼這次,我們就通過一個例子,來具體展示決策樹的工作原理,以及資訊熵在其中承擔的角色。 有一點得先說一下,決策樹在優化過程中,有3個經典的演算法,分別是ID3,C4.5
Flask框架(二)—— 反向解析、配置資訊、路由系統、模板、請求響應、閃現、session
Flask框架(二)—— 反向解析、配置資訊、路由系統、模板、請求響應、閃現、session 目錄 反向解析、配置資訊、路由系統、模板、請求響應、閃現、session 一、反向解析 1、什麼是反向解析 2、使用 二、配置資訊 1