freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

itjob就業(yè)培訓(xùn)java教材22-wenkub

2023-04-21 00:40:03 本頁面
 

【正文】 況并不鮮見。DOM以及廣義的基于樹的處理具有幾個優(yōu)點首先,由于樹在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對數(shù)據(jù)和結(jié)構(gòu)作出更改。DOM使用父子關(guān)系。 ?xml version= encoding=UTF8?studentnamegoudan/nameage28/age/student studentagenamegoudan28DOM還提供各種不同的功能,可用于分析和操作樹的內(nèi)容和結(jié)構(gòu)。目前,有三個級別的DOM是正式的推薦標準,被命名為DOM Level 1,DOM Level 2 和DOM Level 3。如果您的代碼不夠健壯,它從XML文檔中得到輸入數(shù)據(jù),并且該代碼要求文檔遵循特定的DTD或者模式,那么您可能就不得不驗證所有的內(nèi)容,不論代價多么高,多么浪費時間。)那么為什么要使用非驗證解析器呢?有兩個很好的理由:速度和效率。如果XML解析器發(fā)現(xiàn)XML文檔不是結(jié)構(gòu)良好的,XML Specification要求解析器報告一個致命錯誤。n 有效文檔:這些結(jié)構(gòu)良好的文檔同時還符合文檔類型定義(DTD)或XML Schema所定義的規(guī)則。一般而言使用解析器需要以下步驟:n 創(chuàng)建一個解析器對象n 使解析器指向您的XML文檔n 處理結(jié)果顯然第三步最為復(fù)雜。第二十二章:使用Java解析XML ITjob就業(yè)培訓(xùn)第二十二章:使用Java解析XML學(xué)習(xí)目標n 解析器的介紹n 文檔對象模型(DOM)解析實例n SAX解析實例n DOM4J解析實例n JDOM解析實例 n JAVA操縱XML 實例講解 解析器的介紹XML解析器是讀取XML文檔并分析其結(jié)構(gòu)的代碼。一旦知道了XML文檔的內(nèi)容,比方說,您可能希望生成一個Web頁面,創(chuàng)建一個訂單或者做一個餅圖。n 無效文檔:除以上兩種文檔外的所有其他文檔。驗證解析器:在解析時驗證XML文檔,而非驗證解析器:不驗證文檔。XML解析器讀取DTD或者模式,建立規(guī)則引擎保證XML文檔中的每個元素和屬性都遵循這些規(guī)則,需要做大量的工作。DOM是W3C推薦的正式標準。本章中所討論的DOM功能都是DOM Level 2的一部分。DOM是處理XML數(shù)據(jù)的傳統(tǒng)方法。例如,在這個例子中,student是具有五個孩子的根元素:三個文本節(jié)點(空白),以及兩個元素節(jié)點name和age。它還可以在任何時候在樹中上下導(dǎo)航,而不是像SAX那樣是一次性的處理。此外,創(chuàng)建一棵DOM樹可能是一個緩慢的過程。請看下圖解析過程: 當使用SAX解析器解析一個XML文檔時,解析器在讀取文檔的過程中會生成一系列的事件。而且,由于應(yīng)用程序只是在讀取數(shù)據(jù)時檢查數(shù)據(jù),因此不需要將數(shù)據(jù)存儲在內(nèi)存中。另一方面,由于應(yīng)用程序沒有以任何方式存儲數(shù)據(jù),使用SAX來更改數(shù)據(jù)或在數(shù)據(jù)流中往后移是不可能的。要記住,JDOM在背后包含使用普通SAX或DOM 解析器的適配器; JDOM對所有主要的(和幾個次要的)Java XML解析器都提供了適配器,因此不必擔心您的Java XML解析器是否支持JDOM,JDOM在幕后使用的解析器不需要您的干涉。 文檔對象模型(DOM)解析實例DOM主要包含下列內(nèi)容:DOM文檔是以層次結(jié)構(gòu)組織的節(jié)點或信息片段的集合。DOM解析過程(下圖): 利用JAXP把xml文檔的內(nèi)容解析到一個個的Java對象中,只需幾行代碼就能做到這一點。所以當在不同的解析器之間進行切換時,只需要更改系統(tǒng)變量的值,而不用更改任何代碼。但具體是哪一種解析器,微軟的或者IBM的,對于程序而言并不重要。而具體對Document操作的方法,就是由DOM所定義。 當一個Node對象被建立之后,保存在XML文檔中的數(shù)據(jù)就被提取出來并封裝在這個Node中了。W3C把標簽內(nèi)的文本部分也定義成一個Node,所以先要得到代表文本的那個Node,我們才能夠使用getNodeValue()來獲取文本的內(nèi)容。此外,Document還包含了創(chuàng)建其它節(jié)點的方法,比如createAttribute()用來創(chuàng)建一個Attr對象。如果在一個標簽內(nèi)沒有其它的標簽,那么標簽內(nèi)的文本所代表的Text對象是這個Element對象的唯一子對象。在實際使用的時候,很少會真正的用到Node這個對象,而是用到諸如Element、Attr、Text等Node對象的子對象來操作文檔。 getFirstChild():如果節(jié)點存在子節(jié)點,則返回第一個子節(jié)點,對等的,還有g(shù)etLastChild()方法返回最后一個子節(jié)點。 getNodeValue():返回節(jié)點的值。insertBefore( new, ref):在給定的一個子對象前再插入一個子對象??梢院唵蔚陌阉闯梢粋€Node的數(shù)組,我們可以通過方法來獲得列表中的元素: getLength():返回列表的長度。getElementsByTagName(String):返回一個NodeList對象,它包含了在這個標簽中其下的子孫節(jié)點中具有給定標簽名字的標簽。這時候需要用到getAttributeNodes()方法來得到一個Attr對象來進行進一步的操作。也就是說,Attr其實是被看作包含它的Element對象的一部分,它并不作為DOM樹中單獨的一個節(jié)點出現(xiàn)。s website./description /link link textmicrosoft/text url newWindow=no/url authorbill gates/author date day4/day month1/month year2000/year /date descriptionbill39。import 。 DocumentBuilder builder = ()。 for (int i = 0。 ((text).item(0) .getFirstChild().getNodeValue())。 ((author).item(0) .getFirstChild().getNodeValue())。 String month = (month).item(0) .getFirstChild().getNodeValue()。 ((description) .item(0).getFirstChild().getNodeValue())。import 。import 。import 。 ()。 String discription = a good website for it job!。 textseg = (text)。 textseg = (url)。 textseg = (author)。 String day = (rightNow .get())。 Element linkdateday = (day)。 textseg = (month)。 (textseg)。 (linkdate)。 (linkdiscription)。 DOMSource source = new DOMSource(doc)。 } catch (Exception e) { ()。import 。import 。 } // 解析完成后的工作 public void endDocument() throws SAXException { Enumeration e = ()。 } } // 對每一個開始元屬進行處理 public void startElement(String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException { String key = rawName。 count++。 SAXParserFactory spf = ()。 } catch (Exception ex) { ()。import 。import 。 String url = null。 String year = null。 } public void startElement(String p0, String p1, String p2, Attributes
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1