String?xml="xmlToUserName![CDATA[toUser]]/ToUserName"沖舉簡(jiǎn)
10余年專注成都網(wǎng)站制作,企業(yè)網(wǎng)站設(shè)計(jì),個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站設(shè)計(jì),高端網(wǎng)頁(yè)制作,對(duì)除甲醛等多個(gè)領(lǐng)域,擁有多年設(shè)計(jì)經(jīng)驗(yàn)。
+"FromUserName![CDATA[fromUser]]答拆/FromUserName"
+"CreateTime12345678/CreateTime"
+"MsgType![CDATA[text]]/MsgType"
+"Content散褲![CDATA[你好]]/Content/xml";
try?{
//加載xml字符串
org.dom4j.Document?document=org.dom4j.DocumentHelper.parseText(xml);
//獲取根節(jié)點(diǎn)
org.dom4j.Element?root=document.getRootElement();
//獲取值??==toUser
String?toUserName=root.elementText("ToUserName");
System.out.println(toUserName);
}?catch?(Exception?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
(1)DOM解析
DOM是html和xml的應(yīng)用程序接口(API),以層次結(jié)構(gòu)(類似于樹(shù)型)來(lái)組織節(jié)點(diǎn)和信息片段,映射XML文檔的結(jié)構(gòu),允許獲取
和操作文檔的任意部分,是W3C的官方標(biāo)準(zhǔn)
【優(yōu)點(diǎn)】
①允許應(yīng)用程序?qū)?shù)據(jù)和結(jié)構(gòu)做出更改。
②訪問(wèn)是雙向的,可以在任何時(shí)候在樹(shù)中上下導(dǎo)航,獲取和操作任意部分的數(shù)據(jù)。
【缺點(diǎn)】
①通常需要加載整個(gè)XML文檔來(lái)構(gòu)造層次結(jié)構(gòu),消耗資源大。
【解析詳解】
①構(gòu)建Document對(duì)象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = bdf.newDocumentBuilder();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(xml文件);
Document doc = bd.parse(is);
②遍歷DOM對(duì)象
Document: XML文檔對(duì)象,由解析器獲取
NodeList: 節(jié)點(diǎn)數(shù)組
Node: 節(jié)點(diǎn)(包括element、#text)
Element: 元素,可用于獲取屬性參數(shù)
(2)SAX(Simple API for XML)解析
流模型中的"推"模型分析方式。通過(guò)事件驅(qū)動(dòng),每發(fā)現(xiàn)一個(gè)節(jié)點(diǎn)就引發(fā)一個(gè)事件,事件推給事件處理器,通過(guò)回調(diào)方法
完成解析工作,解析XML文檔的邏輯需要應(yīng)用程序完成
【優(yōu)勢(shì)】
①不需要等待所有數(shù)據(jù)都被處理,分析就能立即開(kāi)始。
②只在讀取數(shù)據(jù)時(shí)檢查數(shù)據(jù),不需要保存在內(nèi)存中。
③可以在某個(gè)條件得到滿足時(shí)停止解析,不必解析整個(gè)文檔。
④效率和性能較高,能解析大于系統(tǒng)內(nèi)存的文檔。
【缺點(diǎn)】
①需要應(yīng)用程序自己負(fù)責(zé)TAG的處理邏輯(例如維護(hù)父/子關(guān)旁禪橘系等),文檔越復(fù)雜程序就越復(fù)雜。
②單向?qū)Ш剑瑹o(wú)法定位文檔層次,很難同時(shí)訪問(wèn)同一文檔的不同部分?jǐn)?shù)據(jù),不支持XPath。
【原理】
簡(jiǎn)單的說(shuō)就是對(duì)文檔進(jìn)行順序掃描,當(dāng)掃描到文檔(document)開(kāi)始與結(jié)束、元素(element)開(kāi)運(yùn)團(tuán)始與結(jié)束時(shí)通知事件
處理函數(shù)(回調(diào)函數(shù)),進(jìn)行相應(yīng)處理,直到文檔結(jié)束
【事件處理器類型】
①訪問(wèn)XML DTD:DTDHandler
②低級(jí)訪問(wèn)解析襲春錯(cuò)誤:ErrorHandler
③訪問(wèn)文檔內(nèi)容:ContextHandler
【DefaultHandler類】
SAX事件處理程序的默認(rèn)基類,實(shí)現(xiàn)了DTDHandler、ErrorHandler、ContextHandler和EntityResolver接口,通常
做法是,繼承該基類,重寫(xiě)需要的方法,如startDocument()
【創(chuàng)建SAX解析器】
SAXParserFactory saxf = SAXParserFactory.newInstance();
SAXParser sax = saxf.newSAXParser();
注:關(guān)于遍歷
①深度優(yōu)先遍歷(Depthi-First Traserval)
②廣度優(yōu)先遍歷(Width-First Traserval)
(3)JDOM(Java-based Document Object Model)
Java特定的文檔對(duì)象模型。自身不包含解析器,使用SAX
【優(yōu)點(diǎn)】
①使用具體類而不是接口,簡(jiǎn)化了DOM的API。
②大量使用了Java集合類,方便了Java開(kāi)發(fā)人員。
【缺點(diǎn)】
①?zèng)]有較好的靈活性。
②性能較差。
(4)DOM4J(Document Object Model for Java)
簡(jiǎn)單易用,采用Java集合框架,并完全支持DOM、SAX和JAXP
【優(yōu)點(diǎn)】
①大量使用了Java集合類,方便Java開(kāi)發(fā)人員,同時(shí)提供一些提高性能的替代方法。
②支持XPath。
③有很好的性能。
【缺點(diǎn)】
①大量使用了接口,API較為復(fù)雜。
(5)StAX(Streaming API for XML)
流模型中的拉模型分析方式。提供基于指針和基于迭代器兩種方式的支持,JDK1.6新特性
【和推式解析相比的優(yōu)點(diǎn)】
①在拉式解析中,事件是由解析應(yīng)用產(chǎn)生的,因此拉式解析中向客戶端提供的是解析規(guī)則,而不是解析器。
②同推式解析相比,拉式解析的代碼更簡(jiǎn)單,而且不用那么多庫(kù)。
③拉式解析客戶端能夠一次讀取多個(gè)XML文件。
④拉式解析允許你過(guò)濾XML文件和跳過(guò)解析事件。
【簡(jiǎn)介】
StAX API的實(shí)現(xiàn)是使用了Java Web服務(wù)開(kāi)發(fā)(JWSDP)1.6,并結(jié)合了Sun Java流式XML分析器(SJSXP)-它位于
javax.xml.stream包中。XMLStreamReader接口用于分析一個(gè)XML文檔,而XMLStreamWriter接口用于生成一個(gè)
XML文檔。XMLEventReader負(fù)責(zé)使用一個(gè)對(duì)象事件迭代子分析XML事件-這與XMLStreamReader所使用的光標(biāo)機(jī)制
形成對(duì)照。
(1)DOM解析
DOM是html和昌戚xml的應(yīng)用程序接口(API),以層次結(jié)構(gòu)(類似于樹(shù)型)來(lái)組織節(jié)點(diǎn)和信息片段,映射談彎XML文檔的結(jié)構(gòu),允許獲取;
(2)SAX(Simple API for XML)解析
流模型中的"推"模型分析方式。通過(guò)事件驅(qū)動(dòng),每發(fā)現(xiàn)一個(gè)節(jié)點(diǎn)就引發(fā)一個(gè)事件,事件推給事件處理器,通過(guò)回調(diào)方法;
(1)、dom解析
dom解析是html和xml的應(yīng)用程序接口(api) 以層次結(jié)構(gòu)(類似與樹(shù)形)來(lái)組織節(jié)點(diǎn) 和信息片段 映射xml文耐侍陵檔的結(jié)構(gòu) 允許獲取和操作文檔的任意部分 是官方標(biāo)準(zhǔn)
(2)、sax解析
流模型中in個(gè)的 推 模型 分析方式 通過(guò)事件驅(qū)動(dòng) 沒(méi)發(fā)現(xiàn)一個(gè)節(jié)點(diǎn)就引發(fā)一個(gè)事件 事件推給事件處理期 遍歷回調(diào)方法
(3)、stax
流模型中的拉模型分析方式 提供基于指針和基于迭代器兩種方式 的支持1.6新特征
(4)、jdom
java特定的文檔對(duì)象模型 自身不包含解析器 使用sax
(5)、jdom4j
簡(jiǎn)單易用 采用java集合框架 兵完全支持dom sax 和jaxp