中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用XML文檔進行分析

發布時間:2021-09-23 09:43:35 來源:億速云 閱讀:135 作者:小新 欄目:編程語言

小編給大家分享一下如何使用XML文檔進行分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

  怎樣使用XML文檔進行分析

  一、推分析之于拉分析

  比較于推分析,拉分析具有如下一些優點:

  1.在拉分析中,事件是由分析應用程序生成的,因此把分析規則提供到客戶端而不是分析器。

  2.拉分析的代碼更簡單并且它比推分析有更少的庫。

  3.拉分析客戶端能同時讀多個XML文檔。

  4.拉分析允許你過濾XML文檔并且跳過分析事件。

  二、了解StAX

  針對于XML的流式API(StAX),是在2004年3月的JSR173規范中引入,這是一種針對XML的流式拉分析API.StAX是JDK6.0提供的一種新特征,你可以從此處下載它的測試版本試用。

  一個推模型分析器不斷地生成事件,直到XML文檔被完全分析結束。但是,拉分析由應用程序進行調整;因此,分析事件是由應用程序生成的。這意味著,使用StaX,你可以推遲分析-在分析時跳過元素并且分析多個文檔。在使用DOMAPI的時候,你必須把整個的XML文檔分析成一棵DOM結構,這樣也就降低了分析效率。而借助于StAX,在分析XML文檔時生成分析事件。有關于StAX分析器與其它分析器的比較在此不多介紹。

  StAXAPI的實現是使用了JavaWeb服務開發(JWSDP)1.6,并結合了SunJava流式XML分析器(SJSXP)-它位于javax.xml.stream包中。XMLStreamReader接口用于分析一個XML文檔,而XMLStreamWriter接口用于生成一個XML文檔。XMLEventReader負責使用一個對象事件迭代子分析XML事件-這與XMLStreamReader所使用的光標機制形成對照。本教程將基于JDK6.0中的StAX實現來完成對一個XML文檔的分析。

  其實,StaX僅僅是JDK6.0所提供的XML新特征之一。新的JDK6.0還提供了對針對于XML-Web服務的Java架構(JAX-WS)2.0,針對于XML綁定的JavaAPI(JAXB)2.0,XML數字簽名API的支持,甚至還支持SQL:2003'XML'數據類型。

  三、初步安裝

  如果你正在使用JDK6.0,那么默認情況下,StAXAPI位于Classpath中。如果你在使用JWSDP1.6,請把JWSDP1.6StAXAPI添加到classpath中。這需要把sjsxplibjsr173_api.jar和sjsxplibsjsxp.jar添加到CLASSPATH變量中。在目錄下安裝JWSDP1.6.Jsr173_api.jar相應于JSR-173APIJAR,Sjsxp.jar相應于SJXSP實現JAR.

  四、使用XMLStreamWriter進行寫操作

  首先,你要創建將待分析的XML文檔。由StAX的XMLStreamWriter生成XML.然而,XMLStreamWriter的一個限制是,它不一定會生成良構的文檔-而且生成的文檔也不一定是有效的。你需要確保生成的XML文檔是良構的。列表1是一個由XMLStreamWriter生成的原始XML文檔的示例。

  怎樣使用XML文檔進行分析

  在此,你試圖使用XMLStreamWriterAPI生成列表1中的catalog.xml.在本節中的代碼片斷節選自XMLWriter.java應用程序,顯示于列表2中。首先,你將導入StAX包類,請參考下列編碼:

  importjavax.xml.stream.*;

  importjavax.xml.stream.events.*;

  importjavax.xml.stream.XMLOutputFactory;

  你要從一個XMLOutputFactory中得到你的XMLStreamWriter.因此,首先你必須創建一個新的XMLOutputFactory:

  XMLOutputFactoryoutputFactory=XMLOutputFactory.newInstance();

  接下來,創建一個FileWriter以輸出XML文檔-它將被生成到一個XML文件中:

  FileWriteroutput=newFileWriter(newFile("C:/STAX/catalog.xml"));

  接下來,創建一個XMLStreamWriter:

  XMLStreamWriterXMLStreamWriterr=outputFactory.createXMLStreamWriter(output);

  現在,使用writeStartDocument()方法創建一個文檔開頭。添加要在XML聲明中指定的編碼和版本(記住,指定的編碼并不是生成的XML文檔的編碼)。如果你需要指定XML文檔的編碼,該怎么辦呢?當從一個XMLOutputFactory對象創建一個XMLStreamWriter對象時,你會這樣做:

  XMLStreamWriter.writeStartDocument("UTF-8","1.0");

  使用writeComment()方法以輸出一個注釋:

  XMLStreamWriter.writeComment("AOReillyJournalCatalog");

  使用writeProcessingInstruction()方法以輸出一條處理指令:

  XMLStreamWriter.writeProcessingInstruction("catalog","journal='OReilly'");

  使用writeStartElement()方法以輸出'catalog'元素的開始(元素前綴和命名空間URI也可以在這個方法中指定的):

  XMLStreamWriter.writeStartElement("journal","catalog","http://OnJava.com/Journal");

  使用writeNamespace()方法以添加'journal'命名空間聲明(命名空間前綴和命名空間URI也是在這個方法中指定的):

  XMLStreamWriter.writeNamespace("journal","http://OnJava.com/Journal");

  再次使用writeNamespace()方法添加xsi命名空間:

  XMLStreamWriter.writeNamespace("xsi","http://www.w3.org/2001/XMLSchema-instance");

  使用writeAttribute()方法添加xsi:namespaceSchemaLocation屬性:

  XMLStreamWriter.writeAttribute("xsi:noNamespaceSchemaLocation","file://c:/Schemas/catalog.xsd");

  使用writeAttribute()方法添加'publisher'屬性:

  XMLStreamWriter.writeAttribute("publisher","OReilly");

  輸出'journal'元素的開始。當增加一個新元素時,前一個元素的'>'括號也被添加上:

  XMLStreamWriter.writeStartElement("journal","journal","http:

  //OnJava.com/Journal");

  使用writeAttribute()方法以添加'date'和'title'屬性。然后,使用writeElement()方法以添加'article'和'title'元素。然后,使用writeCharacters()方法輸出'title'元素的文本:

  XMLStreamWriter.writeCharacters("DataBindingwithXMLBeans");

  任何包含文本或子元素的元素都要有一個結束標簽。使用writeEndElement()元素來添加'title'元素的結束標簽:

  XMLStreamWriter.writeEndElement();

  添加'author'元素和'journal'元素的結束標簽。在writeEndElement()方法中,不必要指定元素前綴和命名空間URI.以類似方式添加另一個'journal'元素。然后,添加'catalog'元素的結束標簽。最后,輸出緩沖的數據:

  XMLStreamWriter.flush();

  最后一步,關閉XMLStreamWriter.

  XMLStreamWriter.close();

  這就是生成catalog.xml的過程。

  源碼中的列表2展示了完整的Java應用程序-XMLWriter.java.這個應用程序可以作為一個命令行應用程序運行或在一種例如Eclipse這樣的IDE中運行。

  五、使用XMLStreamReader進行分析

  通過使用XMLStreamReaderAPI分析列表1中的文檔,我們來詳細分析一下其工作原理。XMLStreamReader使用一種光標分析XML文檔。它的接口包含一個next()方法-由它分析下一個分析事件。getEventType()方法返回事件類型。后面的代碼片斷來自于XMLParser.java應用程序,詳見列表3.

  在這個XMLParser.java應用程序中,首先,你要導入StAX類:

  importjavax.xml.stream.*;

  importjavax.xml.stream.events.*;

  importjavax.xml.stream.XMLInputFactory;

  然后,創建一個XMLInputFactory,由此你會得到一個XMLStreamReader:

  XMLInputFactoryinputFactory=XMLInputFactory.newInstance();

以上是“如何使用XML文檔進行分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

xml
AI

安国市| 临武县| 安多县| 洪江市| 龙口市| 彩票| 同仁县| 海淀区| 玉树县| 蒙阴县| 吉林市| 开阳县| 阿拉善右旗| 平南县| 山东| 柘荣县| 柳林县| 峡江县| 荔浦县| 乌什县| 赞皇县| 上虞市| 丰县| 莱州市| 南宫市| 五台县| 定远县| 民权县| 新乡县| 福安市| 吉林市| 仁布县| 巩义市| 南通市| 景泰县| 岫岩| 平邑县| 巩留县| 金门县| 锦屏县| 时尚|