国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java基礎篇---XML解析(一)

2019-11-14 22:33:35
字體:
來源:轉載
供稿:網友
java基礎篇---xml解析(一)XML是可擴展標記語言

  在XML文件中由于更多的是描述信息的內容,所以在得到一個xml文檔后應該利用程序安裝其中元素的定義名稱去除對應的內容,這樣的操作稱為XML解析。

  在XML解析中W3C定義SAX和DOM兩中解析方式,這兩種解析方式的程序操作如下圖:

  從圖中可以看出,應用程序不是直接對XML文檔進行操作的,而是首先由XML分析其對XML文檔進項分析,然后應喲程序通過XML分析器所提供的DOM接口或SAX接口對分析結果進項操作,從而間接實現了對XML文檔的訪問。下面進行具體操作

  DOM解析

  DOM模式解析XML,是把整個XML文檔當成一個對象來處理,會先把整個文檔讀入到內存里。是基于樹的結構,通常需要加載整文檔和構造DOM樹,然后才能開始工作。

dom_demo.xml文件

<?xml version="1.0" encoding="GBK"?><addresslist>    <linkman>        <name>?my?</name>        <email>oumyye@163.com</email>    </linkman>    <linkman>        <name>oumyye</name>        <email>oumyye@QQ.com</email>    </linkman></addresslist>

DOMDemo.java解析文件

package com.xml.dom解析 ;import java.io.* ;import org.w3c.dom.* ;import javax.xml.parsers.* ;public class DOMDemo {    public static void main(String args[]) throws Exception {        // 取得DocumentBuilderFactory類的對象        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;        // 取得DocumentBuilder類的對象        DocumentBuilder build = factory.newDocumentBuilder()  ;        Document doc = build.parse(new File("E:" + File.separator + "dom_demo.xml")) ;        NodeList nl = doc.getElementsByTagName("name") ;        // 輸出節點        System.out.

運行結果:

  SAX解析

  SAX與DOM操作不同的是,SAX采用了是一種順序模式進行訪問,是一種快速讀取XML 數據的方式,當使用SAX解析器進行操作時會觸發一系列事件,如下圖所示,當掃描到文檔開始與結束,元素開始與結束時都會調用相關的處理方法,并作出相應的操作。

sax_demo.xm文件

<?xml version="1.0" encoding="GBK"?><addresslist>    <linkman id="omy" name="褲">        <name>偶my耶</name>        <email>oumyye@163.com</email>    </linkman>    <linkman id="ol" name="外">        <name>偶啦</name>        <email>oumyye@qq.com</email>    </linkman></addresslist>

MySAX.java 源代碼:

package com.xml.sax解析;import java.io.File;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.*;import org.xml.sax.helpers.*;public class MySAX extends DefaultHandler {    public void startDocument() throws SAXException {        System.out.println("<?xml version=/"1.0/" encoding=/"GBK/">");    }    public void startElement(String uri, String localName, String qName,            Attributes attributes) throws SAXException {        System.out.print("<");        System.out.print(qName);        if (attributes != null) { // 如果存在了屬性            for (int x = 0; x < attributes.getLength(); x++) {                System.out.print(" " + attributes.getQName(x) + "=/""                        + attributes.getValue(x) + "/"");            }        }        System.out.print(">");    }    public void endElement(String uri, String localName, String qName)            throws SAXException {        System.out.print("<");        System.out.print(qName);        System.out.print(">");    }    public void characters(char[] ch, int start, int length)            throws SAXException {        System.out.print(new String(ch, start, length));    }    public void endDocument() throws SAXException {        System.out.println("文檔結束。。。");    }    public static void main(String args[]) throws Exception {        // 建立SAX解析工廠        SAXParserFactory factory = SAXParserFactory.newInstance();        SAXParser parser = factory.newSAXParser();        parser.parse("e:" + File.separator + "sax_demo.xml", new MySAX());    }}

  解析結果:

下面我們來看下DOM和SAX的區別:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 琼结县| 伊宁县| 新和县| 英山县| 双桥区| 双柏县| 徐闻县| 西乌珠穆沁旗| 高要市| 威信县| 简阳市| 达州市| 黑山县| 定远县| 大城县| 图木舒克市| 上高县| 斗六市| 巴彦县| 澄江县| 辽宁省| 探索| 故城县| 阿巴嘎旗| 阳新县| 罗山县| 德化县| 新兴县| 贵港市| 徐州市| 青河县| 舟曲县| 仲巴县| 高要市| 阜平县| 信阳市| 淮南市| 阳谷县| 吴川市| 黎川县| 忻州市|