<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 33,comments - 21,trackbacks - 0
    轉貼自賽迪網(http://tech.ccidnet.com/art/294/20021120/31320_4.html)


    DOM 由W3C 制定,目標是提供一個可以通用于各種程序語言、操作系統和應用程序的API,所以DOM 具有極高的兼容性,不論CORBA、COM、Java、C++等都可以使用同樣的DOM 接口。也因為這種跨平臺的需求,DOM 在定義時就采用了CORBA 標準,因此它可以為各個語言提供完全相同的接口。

    DOM 是文檔對象模型。XML 將數據組織為一棵樹,DOM 就是對這棵樹的一個對象描述。通俗地說,就是通過解析XML 文檔,為XML 文檔在邏輯上建立一個樹模型,樹的節點是一個個對象。我們通過存取這些對象就能夠存取XML 文檔的內容。

    DOM 的基本對象有5個,分別是Document、Node、NodeList、Element 和 Attr。

    下面舉一個通過一個圖形界面觀察DOM 對象的例子。在Java 的標準包里有JTree 可以來表達樹的概念,結合Java 的窗口JFrame ,完成一個類似于IE瀏覽器功能的DOM 對象查看器。

    DOMTreeView.java 的源程序代碼詳見http://linux.ccidnet.com的期刊瀏覽第11期。

    2.SAX 編程

    SAX(Simple Application interface for XML)是一個為基于事件XML解析器定義的、可以免費獲得的、與平臺和語言無關的API,它允許程序和腳本動態的訪問和更新文檔內容、結構和風格。所以,它作為一個中間件層用來把XML文檔中的數據解釋成相應的Java事件。SAX這個接口規范是XML分析器和處理器提供的、較XML更底層的接口,它能提供應用以較大的靈活性。SAX是一種事件驅動的接口。它的基本原理是,由接口的用戶提供符合定義的處理器,XML分析時遇到特定的事件,就去調用處理器中特定事件的處理函數。一般SAX都是Java的接口,但C++也可以用SAX接口,只是C++的分析器比較少。SAX需要用戶提供以下三個處理器類的實現:

    (1)DocumentHandlerXML:文件事件的處理器;

    (2)DTDHandler:DTD中事件的處理器;

    (3)ErrorHandler:出錯處理器。

    下面舉一個例子,它實現了許多處理XML 文件時重要事件的ContentHandler 接口,并且說明SAX 是如何分析XML 數據的。

    MySAXParser.java 的源程序代碼如下(節選部分):
    //MySAXParser.java
    import java.io.IOException;
    import java.io.FileInputStream;
    import java.util.Properties;
    import org.xml.sax.Attributes;
    import org.xml.sax.ContentHandler;
    import org.xml.sax.ErrorHandler;
    import org.xml.sax.Locator;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.XMLReaderFactory;
    /**
     * <code>SAXParser</code>可以從命令行下讀入一個XML文件并且使用SAX標準的機制來分析該文件。
     */
    public class MySAXParser{
    	/**
    	 *<p>
    	 *我們將在這里使用標準的SAX的處理機制(handler)來處理XML文件
    	 *</p>
    	 * @param uri 欲分析的XML文件的URI
    	 */
    	public void parseXML(String uri) {
    		try{
    			System.out.println("正在分析中的XML文件: " + uri + "\n");
    			XMLReader parser =
                    		XMLReaderFactory.createXMLReader(
                        		"org.apache.xerces.parsers.SAXParser");
    			//XMLReader parser = new SAXParser();
    			//注冊所設計的內容處理器
    			parser.setContentHandler(new MyContentHandler());
    			//注冊錯誤處理器
    			parser.setErrorHandler(new MyErrorHandler());
    			//分析文件
    			parser.parse(uri);
    		} catch(IOException ioe){
    			System.out.println("文件讀取錯誤:"+ioe.getMessage());
    		} catch(SAXException saxe){
    			System.out.println("XML分析錯誤: "+saxe.getMessage());
    		}
    	}
    	/**
    	 *<p>
    	 *主程序使用命令列的參數來指定所要分析的XML文件
    	 *</p>
    	 */
    	public static void main(String[] args) {
    		//如果參數數目不對,則輸出使用說明,并結束程序
    		if( args.length != 1 ){
    			System.out.println("請輸入欲分析的文件名: " +"java example3_1 [XML URI]");
    			System.exit(-1);
    		}
    		String uri = args[0];
    		MySAXParser myParser = new MySAXParser();
    		myParser.parseXML(uri);
    	}
    }
    /**
     *<code>ContentHandler</code>實做<code>org.xml.sax.
     *ContentHandler</code>界面,并且提供提供相關的回調方法。
     *所有和XML文件內容有關的分析處理都是在這里解決。
     */
    class MyContentHandler implements ContentHandler {
    ..........
    ..........


    Java 與 XML ——JAXP編程應用

    在許多方面,Java 語言已變成供XML 選擇的一種非常適合的編程語言。在JAXP(用于XML語法分析的Java API)中包含3個軟件包:

    1. org.w3c.dom —W3C 推薦的用于XML 標準規劃文檔對象模型的Java 工具;

    2. org.xml.sax—用于對XML 進行語法分析的事件驅動的簡單API;

    3. Javax.xml.parsers —工廠化工具,允許應用程序開發人員獲得并配置特殊的語法分析器工具。

    JAXP 作為Java 應用軟件和XML 的公共接口,用來保證Sun 、IBM 和 Micrsoft 等公司的XML 分析程序的完全兼容性。

    JAXP 是由Sun 提供的Java 的標準XML 語言開發接口,目前最高版本為1.1 。JAXP1.1包含兩個部分:一個是parser 部分,位于Javax.xml.parsers 包中,負責解析XML 文檔;另一個是transform(TrAX)部分,位于Java.xml.transform 包中,負責進行xslt 轉換工作。

    JAXP1.1 中包含3個jar 文件,分別是JAXP.jar、crimson.jar 和 xalan.jar 。JAXP.jar 提供了一系列的界面和抽象類,是開發時使用的接口;crimson.jar 中定義了實際上使用的解析器;xalan.jar 中定義了transform 處理器。

    JAXP1.1 的解析器提供了SAX2 和 DOM2 支持,同時支持XML1.0 第二版,也支持名空間。JAXP1.1 的TrAX 部分提供了對Xslt 推薦標準1.0 版本的支持。

    下面的例子分別是使用JAXP獲得 Document Builder 建立一個DOM 對象套式文件,以及使用JAXP獲得一個 SAX 語法分析器剖析一個XML 文件。

    (1)DOMDemo.java 源程序代碼詳見http://linux.ccidnet.com的期刊瀏覽第11期。

    (2)SAXDemo.java 源程序代碼詳見http://linux.ccidnet.com的期刊瀏覽第11期。

    有關JAXB 和 JDOM 的編程,由于篇幅有限,在此就不多說了。

    結合的意義


    1.Java 與 XML 結合從用戶使用的應用界面來說,XML 可以用來自定義用戶界面。如果將Java 的圖形界面Swing 技術應用以XML 的形式來設置,就可以同時發揮Java 的“write one, use many”特性。

    2.Java 提供了Servlet 和 JSP (JavaServer Page) 。實際上 XML 和 Servlet、JSP 的相互結合,XML 可以成為Servlet或JSP的輸出輸入語言。XML 不僅提供具有意義的數據,也提供了驗證的方式(DTD),使得程序能輕易地獲得內容,并能夠徹底地完成內容數據和表達方式的分離。

    3.XML 通過Java 的JDBC與Web 數據庫相結合。以XML為基礎的新一代環境是直接面對Web數據的,不僅可以很好地兼容原有的Web應用,而且可以更好地實現Web中的信息共享與交換。XML可看作為一種半結構化的數據模型,很容易地將其文檔描述與關系數據庫中的屬性一一對應起來,實施精確地查詢與模型抽取。XML能增加結構和語義信息,使計算機和服務器即時處理多種形式的信息。因此,運用XML的擴展功能不僅能從Web服務器下載大量的信息,還能大大減少網絡業務量。

    4.XML 與 Java 的 EJB(Enterprise Java Bean) 結合。XML 在EJB 上應用,對于數據的溝通和EJB 的參數設置,使得EJB可以將自己所包含的數據依照JSP 和 Servlet 要求,以 XML 的形式返回,讓JSP 和 Servlet 自行去處理和顯示這些數據有關的工作。一個EJB 可能用到的參數會很多,并且很復雜,如果可以用XML 來定義一個清楚的參數表,這樣就可以依據不同的需求來修改EJB 操作的方式,讓工作更有效率。

    5.Java 的JMS、Java/IDL(CORBA)、Java RMI 及SOAP 等各種分布式的處理,與XML 的XML-RPC 和 SOAP 都具有相似的功能。XML-RPC 和 SOAP 都是將原本是以二進制形式傳遞的消息,用XML 來表達,這樣確保了所有的應用程序都可以讀取這些消息,整個分布式的環境更加開放。
    posted on 2006-11-22 17:23 英明 閱讀(190) 評論(0)  編輯  收藏 所屬分類: 編程

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 精品亚洲成在人线AV无码| 综合亚洲伊人午夜网 | 国产免费爽爽视频免费可以看| 亚洲AⅤ无码一区二区三区在线 | 亚洲精品乱码久久久久久下载| 亚洲色丰满少妇高潮18p| 四虎影视久久久免费观看| 91九色视频无限观看免费| 国产一级淫片免费播放| 国产成人人综合亚洲欧美丁香花| 成人性生交大片免费看中文| 免费看又爽又黄禁片视频1000| 亚洲无线码一区二区三区| 亚洲av日韩综合一区二区三区| 日本不卡免费新一区二区三区| 国产精品黄页在线播放免费| 亚洲美女激情视频| 3344在线看片免费| 4480yy私人影院亚洲| 91成人免费在线视频| 久久国产亚洲精品无码| 精品一区二区三区高清免费观看 | 国产免费小视频在线观看| 国产亚洲高清在线精品不卡 | 免费看片A级毛片免费看| 四虎国产精品成人免费久久| 黑人大战亚洲人精品一区| 日韩免费无码视频一区二区三区| 在线观看亚洲成人| 国产成人久久AV免费| 亚洲一区二区三区免费在线观看 | 成人免费无遮挡无码黄漫视频| 亚洲日本va午夜中文字幕一区| 在线观看免费无码视频| 亚洲精品一级无码鲁丝片| 亚洲国产成人AV网站| 亚洲精品美女久久777777| 丁香花在线观看免费观看图片| 久久精品国产亚洲Aⅴ香蕉| 免费国产污网站在线观看不要卡| 国产三级电影免费观看|