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); } } }

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在Web開發領域中,資料格式之一的XML和JSON被廣泛應用,而Gin框架則是一款輕量級的Go語言Web框架,它簡潔易用且具有高效的效能。本文將介紹如何使用Gin框架實作XML和JSON資料解析功能。 Gin框架概述Gin框架是一款基於Go語言的Web框架,它可用於建立高效且可擴展的Web應用程式。 Gin框架的設計想法是簡潔易用,它提供了多種中間件和插件,使開

隨著Java在網際網路領域的應用越來越廣泛,許多開發者可能會在使用XML進行資料解析的過程中遇到「XML解析錯誤」的問題。 XML解析錯誤是指在使用Java解析XML資料時,由於資料格式不正確、標籤未閉合或其他原因導致程式無法正常解析數據,從而引發錯誤和異常。那麼,在面對XML解析錯誤時,我們該如何解決與避免呢?本文將對這一問題進行詳細說明。一、XML解析

在開發Web應用程式時,XML是一種非常重要的資料格式,它可以用於資料交換和資訊共享等場景。在PHP中,我們可以使用內建的函數和第三方函式庫來解析和操作XML。下面我們將討論如何使用PHP解析XML,並取得其中節點的內容。解析XML文件首先,我們需要解析XML文件,PHP提供了兩種主要的方法來解析XML:1.1.使用SimpleXMLSimpleXML是PHP內

XML是一種常用的資料交換格式,在Java開發中,經常需要解析大規模的XML檔案。然而,由於XML檔案往往包含大量的節點和元素,傳統的XML解析方式容易導致記憶體佔用過高的問題。本文將介紹一些解決XML解析記憶體佔用過高問題的方法。使用SAX解析器SAX(SimpleAPIforXML)是一種基於事件驅動的XML解析方式。相較於DOM(DocumentO

PHP8.1更新:增強的XML解析功能隨著互聯網的快速發展,XML(可擴展標記語言)在資料交換和資訊傳遞中扮演了重要的角色。作為一種通用的資料格式,XML經常被用於在不同應用程式之間傳遞和儲存資料。為了提供更好的XML解析能力,PHP8.1在XML解析功能上進行了增強,為開發者提供了更多便利。在PHP8.1中,一個重要的改進是引入了libxml_disabl

解決JavaXML解析異常(XMLParsingException)的解決方案簡介:在處理XML檔案時,我們常常會遇到XML解析異常(XMLParsingException),這是由於XML檔案格式錯誤或XML解析器設定不正確等原因導致的。本文將介紹一些常見的XML解析異常以及解決方案,幫助開發者更好地應對這些問題。一、XML解析異常的原因在解析XML文

PHP是一種廣泛使用的程式語言,它支援許多不同的檔案格式,包括XML。在處理XML檔案時,可能會出現解析錯誤。本文將介紹如何在PHP中處理XML解析錯誤,並提供一些具體的程式碼範例。檢查XML檔案格式在處理XML檔案之前,必須確保XML檔案的格式正確。 XML檔案必須是嚴格的格式,否則解析器將無法處理該檔案。例如,XML檔案必須包含根元素,並使用正確的命名空間、

Java開發中如何解決XML解析佔用過多堆記憶體問題引言:隨著資訊和資料的爆炸性成長,XML(可擴展標記語言)在企業應用開發中的重要性不斷增加。然而,XML解析過程中可能會遇到佔用過多堆記憶體的問題,尤其是在處理大型XML檔案時。本文將介紹一些解決這個問題的方法和技巧。一、了解XML解析過程在深入解決XML解析佔用過多堆記憶體問題之前,我們先了解XML解析的基
