小編給大家分享一下XML解析中如何使用sax解析把xml文檔封裝成對象,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)建站專注于瑯琊企業(yè)網(wǎng)站建設(shè),響應式網(wǎng)站建設(shè),商城系統(tǒng)網(wǎng)站開發(fā)?,樼鹁W(wǎng)站建設(shè)公司,為瑯琊等地區(qū)提供建站服務。全流程按需定制制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務
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); Listlist = 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 { //存儲所有聯(lián)系人對象 private Listlist = new ArrayList (); public List getList(){ return list; } //保存一個聯(lián)系人信息 private Contact contact; /** * 思路: * 1)創(chuàng)建Contact對象 * 2)把每個contact標簽內(nèi)容存入到Contact對象 * 3)把Contact對象放入List中 */ //用于臨時存儲當前讀到的標簽名 private String curTag;//用于方法跨度使用變量。 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { curTag = qName; //讀取到contact的開始標簽創(chuàng)建Contact對象,這里說明了什么時候創(chuàng)建Content對象最合適。 if("contact".equals(qName)){ contact = new Contact(); //設(shè)置id值 contact.setId(attributes.getValue("id"));//根據(jù)指定名字獲取id值 } } @Override public void characters(char[] ch, int start, int length) throws SAXException { //當前文本內(nèi)容 String content = new String(ch,start,length);//String類構(gòu)造方法獲取到當前文本的額內(nèi)容。 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 { //結(jié)束標簽后就設(shè)置null。這里設(shè)置為null很重要。設(shè)置空是為了避免空格換行設(shè)置到對象的屬性中,空格換行進去了就把原來放進去的數(shù)據(jù)覆蓋掉。 curTag = null; //讀到Contact的結(jié)束標簽把content對象放入List中 if("contact".equals(qName)){ list.add(contact); } } }
以上是“XML解析中如何使用sax解析把xml文檔封裝成對象”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!