XML基礎(chǔ)_ Java解析XML 一、XML基礎(chǔ) 1.1、 XML是什么? XML (可擴(kuò)展標(biāo)記語(yǔ)言)是一種很流行的簡(jiǎn)單的基于文本的語(yǔ)言來(lái)用作應(yīng)用程序之間的通信模式。 它被認(rèn)為是傳輸標(biāo)準(zhǔn)裝置和存儲(chǔ)數(shù)據(jù)。JAVA提供了極好的支持和豐富的庫(kù)來(lái)解析,修改或查詢XML文檔。 XML是一種簡(jiǎn)單的基于文本的語(yǔ)言,它被設(shè)計(jì)為儲(chǔ)存和運(yùn)輸以純文本格式的數(shù)據(jù)。它代表著可擴(kuò)展標(biāo)記語(yǔ)言。以下是一些XML的顯著 特征。 XML是一種標(biāo)記語(yǔ)言。 XML是一種標(biāo)記語(yǔ)言就像HTML-樣。 XML標(biāo)簽不是像HTML那樣預(yù)定義。 可以定義自己的標(biāo)簽,這就是為什么它被稱為可擴(kuò)展的語(yǔ)言。 XML標(biāo)簽被設(shè)計(jì)成自描述性的。 XML是W3C推薦用于數(shù)據(jù)存儲(chǔ)和傳輸。 1.2、XML能干什么? 描述數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、傳輸(交換)數(shù)據(jù)。 優(yōu)缺點(diǎn): 優(yōu)勢(shì) 以下是XML提供的優(yōu)勢(shì): 技術(shù)無(wú)關(guān).作為普通文本,XML是技術(shù)獨(dú)立。它可以用于由任何技術(shù)進(jìn)行數(shù)據(jù)的存儲(chǔ)和傳輸?shù)哪康摹?人類可讀. XML使用簡(jiǎn)單的文本格式。它是人類可讀和可以理解的。
可擴(kuò)展性-在XML,自定義標(biāo)簽可以創(chuàng)建和很容易使用。 允許驗(yàn)證-使用XSD,DTD和XML結(jié)構(gòu)可以很容易地驗(yàn)證。 缺點(diǎn) 下面是使用XML的缺點(diǎn): 冗余的語(yǔ)法-通常XML文件中包含大量的重復(fù)計(jì)算。 冗余-作為一個(gè)冗長(zhǎng)的語(yǔ)言,XML文件大小增加了傳輸和存儲(chǔ)成本。 1.3、 XML與HTML區(qū)別 1、目的不- -樣 2、XML被設(shè)計(jì)用來(lái)描述數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的內(nèi)容。 3、HTML被設(shè)計(jì)用來(lái)展示數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的外觀。 4、HTML可以不關(guān)閉標(biāo)簽(即標(biāo)簽可以不成對(duì)出現(xiàn)),但XML必須關(guān)閉標(biāo)簽(即標(biāo)簽必須成對(duì)出現(xiàn))。 5、HTML中的標(biāo)簽標(biāo)識(shí)文本如何展示,而XML中的標(biāo)簽標(biāo)識(shí)文本是什么含義(什么類型的文本)。
XML文檔節(jié)點(diǎn)類型 文檔(document) 元素(element) 屬性(attribute) 文本(PCDATA--parsed character data) 注釋(comment) DOCTYPE :主要驗(yàn)證文檔內(nèi)容的正確性 實(shí)體(ENTITIES) CDATA(character data) 1.4、XML語(yǔ)法; 1、聲明:2、根節(jié)點(diǎn):必須只能有一個(gè)根節(jié)點(diǎn) 3、標(biāo)簽:標(biāo)簽必須有結(jié)束且區(qū)分大小寫,標(biāo)簽必須順序嵌套 4、屬性:必須引號(hào)引起值 5、空格會(huì)被保留,HTML空格最多保留一個(gè) 6、命名規(guī)則:命名必須見名知意 a)名字可包含字母、數(shù)字以及其他的字符 b)名字不能以數(shù)字或者標(biāo)點(diǎn)符號(hào)開始 c)名字不能以字符"xml”(或者XML、 Xml) 開始 7、名字不能包含空格
8、 不應(yīng)在XML元素名稱中使用":",這是由于它用于命名空間(namespaces) 的保留字。 9、標(biāo)簽優(yōu)先于屬性。 10、XML 命名空間可提供避免元素命名沖突的方法。
CDATA: 字符數(shù)據(jù),,字符數(shù)據(jù)不進(jìn)行轉(zhuǎn)義
12、 實(shí)體: &實(shí)體;
1.5、 Xml約束 1.5.1、 XML DTD約束 DTD (DocType Definition文檔類型定義)的作用是定義XML文檔的合法構(gòu)建模塊。它使用一系列的合法元素來(lái)定義文檔結(jié)構(gòu)。 用 于約定XML格式。 1、DTD引用方式 1.1、內(nèi)部
1.5.2、 XML Schema約束 XML Schema是基于XML的DTD替代者。XML Schema描述XML文檔的結(jié)構(gòu)。XML Schema語(yǔ)言也稱作XML Schema定,義 (XML Schema Definition, XSD)。+ DTD不是通過(guò)XML語(yǔ)法定義文檔結(jié)構(gòu),不能定義數(shù)據(jù)類型和限制Schema通過(guò)XML語(yǔ)法定義文檔結(jié)構(gòu),可以定義數(shù)據(jù)類型和限制 約定XML格式 定義可出現(xiàn)在文檔中的元素 定義可出現(xiàn)在文檔中的屬性 定義哪個(gè)元素是子元素 定義子元素的次序 定義子元素的數(shù)目 定義元素是否為空,或者是否可包含文本 定義元素和屬性的數(shù)據(jù)類型 定義元素和屬性的默認(rèn)值以及固定值
1、為何使用Schema Vr XML Schema是DTD的繼任者 XML Schema可針對(duì)未來(lái)的需求進(jìn)行擴(kuò)展 XML Schema更完善,功能更強(qiáng)大 XML Schema基于XML編寫 XML Schema支持?jǐn)?shù)據(jù)類型和限制 XML Schema支持命名空間
二、Java XML教程 1、Java XML解析器 1.1、什么是XML解析? 解析XML是指將通過(guò)XML文檔訪問(wèn)數(shù)據(jù)或修改數(shù)據(jù)的一個(gè)操作或方法。 Java庫(kù)中提供了兩種XML解析器: 1、像文檔對(duì)象模型(Document Object Model, DOM) 解析器這的樹型解析器(tree parse),它們將讀入的XML文檔轉(zhuǎn)換成樹結(jié)構(gòu)。 2、像XML簡(jiǎn)單API (Simple API for XML,SAX) 解析器這樣的流機(jī)制解析器(streaming parser),它們?cè)谧x入XML文檔時(shí)生成相應(yīng)的事件。 1.2、XML解析器是什么? XML解析器提供方法來(lái)訪問(wèn)或修改XML文檔中的數(shù)據(jù)。Java提供 了多種選擇來(lái)解析XML文檔。以下是各種類型解析器其通常用于解析 XML文檔。 Dom解析器-解析通過(guò)加載該文件的全部?jī)?nèi)容,并創(chuàng)建其完整分級(jí)樹中存儲(chǔ)的文件。 SAX解析器-解析基于事件觸發(fā)器的文檔。不完整(部分)的文件加載到存儲(chǔ)器中。 JDOM解析器-解析以類似的方式,以DOM解析器但更簡(jiǎn)單的方法的文檔。 StAX解析器-解析以類似的方式,以SAX解析器但在更高效的方式的文檔。 XPath解析器-解析基于表達(dá)式XML并廣泛選擇使用XSLT。 DOM4]解析器- Java庫(kù)來(lái)解析XML, XPath和使用Java集合框架XSLT, 為DOM, SAX和JAXP的支持。 6、Java DOM4]解析器 優(yōu)勢(shì) DOM4]使Java開發(fā)的靈活性和XML解析代碼易于維護(hù)。它是輕量級(jí)的,快速的API。
DOM4j類 DOM制定義了幾個(gè)Java類。以下是最常見的類: 類 說(shuō)明 Document:表示整個(gè)XML文檔。文檔Document對(duì)象是通常被稱為DOM樹。 Element: 表示一個(gè)XML元素。Element對(duì)象有方法來(lái)操作其子元素, 它的文本,屬性和名稱空間。 Attribute: 表示元素的屬性。屬性有方法來(lái)獲取和設(shè)置屬性的值。它有父節(jié)點(diǎn)和屬性類型。 Node : 代表元素,屬性或處理指令
Document提供了獲取根元素的方法:Element getRootElement() 而element的每一個(gè)實(shí)例用于表示當(dāng)前xml文件的一個(gè)元素(一對(duì)標(biāo)簽),它提供了獲取 其元素相關(guān)的方法: 獲取當(dāng)前標(biāo)簽的名字:String getName() 獲取當(dāng)前標(biāo)簽中間的文本:String getText() 獲取當(dāng)前標(biāo)簽下指定名字的子標(biāo)簽:Element element(String name) 獲取當(dāng)前標(biāo)簽下的所有子標(biāo)簽:List elements() 獲取當(dāng)前標(biāo)簽下指定名字的子標(biāo)簽:List elements(String name) 獲取當(dāng)前標(biāo)簽下指定名字標(biāo)簽的屬性:Attribute attribute(String name) Attribute的每一個(gè)實(shí)例表示一個(gè)屬性,它有兩個(gè)方法: 獲取屬性名:String getName() 獲取屬性值:String getValue()
一、設(shè)計(jì)模式的分類
總體來(lái)說(shuō)設(shè)計(jì)模式分為三大類:
創(chuàng)建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結(jié)構(gòu)型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問(wèn)者模式、中介者模式、解釋器模式。
其實(shí)還有兩類:并發(fā)型模式和線程池模式。
二、設(shè)計(jì)模式的六大原則
1、開閉原則(Open Close Principle)
開閉原則就是說(shuō)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。在程序需要進(jìn)行拓展的時(shí)候,不能去修改原有的代碼,實(shí)現(xiàn)一個(gè)熱插拔的效果。所以一句話概括就是:為了使程序的擴(kuò)展性好,易于維護(hù)和升級(jí)。想要達(dá)到這樣的效果,我們需要使用接口和抽象類,后面的具體設(shè)計(jì)中我們會(huì)提到這點(diǎn)。
2、里氏代換原則(Liskov Substitution Principle)
里氏代換原則(Liskov Substitution Principle LSP)面向?qū)ο笤O(shè)計(jì)的基本原則之一。 里氏代換原則中說(shuō),任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。 LSP是繼承復(fù)用的基石,只有當(dāng)衍生類可以替換掉基類,軟件單位的功能不受到影響時(shí),基類才能真正被復(fù)用,而衍生類也能夠在基類的基礎(chǔ)上增加新的行為。里氏代換原則是對(duì)“開-閉”原則的補(bǔ)充。實(shí)現(xiàn)“開-閉”原則的關(guān)鍵步驟就是抽象化。而基類與子類的繼承關(guān)系就是抽象化的具體實(shí)現(xiàn),所以里氏代換原則是對(duì)實(shí)現(xiàn)抽象化的具體步驟的規(guī)范?!?From Baidu 百科
3、依賴倒轉(zhuǎn)原則(Dependence Inversion Principle)
這個(gè)是開閉原則的基礎(chǔ),具體內(nèi)容:針對(duì)接口編程,依賴于抽象而不依賴于具體。
4、接口隔離原則(Interface Segregation Principle)
這個(gè)原則的意思是:使用多個(gè)隔離的接口,比使用單個(gè)接口要好。還是一個(gè)降低類之間的耦合度的意思,從這兒我們看出,其實(shí)設(shè)計(jì)模式就是一個(gè)軟件的設(shè)計(jì)思想,從大型軟件架構(gòu)出發(fā),為了升級(jí)和維護(hù)方便。所以上文中多次出現(xiàn):降低依賴,降低耦合。
5、迪米特法則(最少知道原則)(Demeter Principle)
為什么叫最少知道原則,就是說(shuō):一個(gè)實(shí)體應(yīng)當(dāng)盡量少的與其他實(shí)體之間發(fā)生相互作用,使得系統(tǒng)功能模塊相對(duì)獨(dú)立。
6、合成復(fù)用原則(Composite Reuse Principle)
原則是盡量使用合成/聚合的方式,而不是使用繼承。
三、Java的23中設(shè)計(jì)模式
從這一塊開始,我們?cè)敿?xì)介紹Java中23種設(shè)計(jì)模式的概念,應(yīng)用場(chǎng)景等情況,并結(jié)合他們的特點(diǎn)及設(shè)計(jì)模式的原則進(jìn)行分析。
1、工廠方法模式(Factory Method)
工廠方法模式分為三種:
1、普通工廠模式,就是建立一個(gè)工廠類,對(duì)實(shí)現(xiàn)了同一接口的一些類進(jìn)行實(shí)例的創(chuàng)建。
2、多個(gè)工廠方法模式,是對(duì)普通工廠方法模式的改進(jìn),在普通工廠方法模式中,如果傳遞的字符串出錯(cuò),則不能正確創(chuàng)建對(duì)象,而多個(gè)工廠方法模式是提供多個(gè)工廠方法,分別創(chuàng)建對(duì)象。
3、靜態(tài)工廠方法模式,將上面的多個(gè)工廠方法模式里的方法置為靜態(tài)的,不需要?jiǎng)?chuàng)建實(shí)例,直接調(diào)用即可。
一、HTTP基礎(chǔ) 1、web 交互的基本流程客戶端根據(jù)用戶輸入的地址信息請(qǐng)求服務(wù)器,服務(wù)器在接收到用戶的請(qǐng)求后進(jìn)行處理,然后將處理結(jié)果響應(yīng)給客戶端,客戶端將響應(yīng)結(jié)果展示給用戶。 ? 專業(yè)術(shù)語(yǔ): ? 請(qǐng)求:客戶端根據(jù)用戶地址信息將數(shù)據(jù)發(fā)送給服務(wù)器的過(guò)程 ? 響應(yīng):服務(wù)器將請(qǐng)求的處理結(jié)果發(fā)送給瀏覽器的過(guò)程
問(wèn)題: ? 客戶端也就是瀏覽器的版本是有很多的,服務(wù)器的版本也是有很多的,如何實(shí)現(xiàn)不同版本的瀏覽器和不同版本的服務(wù)器之間的數(shù)據(jù)交互呢? ? 解決: ? 規(guī)范瀏覽器和服務(wù)器的數(shù)據(jù)交互的格式。 ? 實(shí)現(xiàn): ? HTTP 協(xié)議
2、HTTP 的概念和介紹概念: ? 超文本傳輸協(xié)議(Hyper Text Transfer Protocol)
作用: ? 規(guī)范了瀏覽器和服務(wù)器的數(shù)據(jù)交互
特點(diǎn): ? 簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有 GET、HEAD、POST。每種方法規(guī)定了客 戶與服務(wù)器聯(lián)系的類型不同。由于 HTTP 協(xié)議簡(jiǎn)單,使得 HTTP 服務(wù)器的程序規(guī)模小,因而通信速度很快 ? 靈活:HTTP 允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀蒀ontent-Type 加以標(biāo)記。 ? 無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開連接。采用這 種方式可以節(jié)省傳輸時(shí)間。 ? 無(wú)狀態(tài):HTTP 協(xié)議是無(wú)狀態(tài)協(xié)議。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信 息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。支持 B/S 及 C/S 模式。HTTP1.1 版本后支持可持續(xù)連接
3、HTTP 的交互流程:HTTP 的交互流程一般分為四個(gè)步驟(一次完整的請(qǐng)求): ? 步驟一: ? 客戶端和服務(wù)器端建立連接 ? 步驟二: ? 客戶端發(fā)送請(qǐng)求數(shù)據(jù)到服務(wù)器端(HTTP 協(xié)議) ? 步驟三: ? 服務(wù)器端接收到請(qǐng)求后,進(jìn)行處理,然后將處理結(jié)果響應(yīng)客戶端(HTTP 協(xié)議) ? 步驟四: ? 關(guān)閉客戶端和服務(wù)器端的連接(HTTP1.1 后不會(huì)立即關(guān)閉)
4、HTTP 協(xié)議之請(qǐng)求格式請(qǐng)求格式的結(jié)構(gòu): ? 請(qǐng)求頭:請(qǐng)求方式、請(qǐng)求的地址和 HTTP 協(xié)議版本 ? 請(qǐng)求行:消息報(bào)頭,一般用來(lái)說(shuō)明客戶端要使用的一些附加信息 ? 空行: 位于請(qǐng)求行和請(qǐng)求數(shù)據(jù)之間,空行是必須的。 ? 請(qǐng)求數(shù)據(jù):非必須。
注意: 一張網(wǎng)頁(yè)的內(nèi)容是極其豐富的,瀏覽器會(huì)遵循HTTP 請(qǐng)求的格式將有效數(shù)據(jù)發(fā)送給服務(wù)器。
5、HTTP 協(xié)議之請(qǐng)求方式根據(jù) HTTP 標(biāo)準(zhǔn),HTTP 請(qǐng)求可以使用多種請(qǐng)求方法。HTTP1.0 定義了三種請(qǐng)求方法: GET, POST 和 HEAD 方法。HTTP1.1 新增了五種請(qǐng)求方法:OPTIONS, PUT, DELETE, TRACE 和CONNECT 方法。
get 和 post 請(qǐng)求方式的區(qū)別: get 請(qǐng)求方式: 請(qǐng)求數(shù)據(jù)會(huì)以?的形式隔開拼接在請(qǐng)求頭中,不安全,沒(méi)有請(qǐng)求實(shí)體部分。HTTP 協(xié)議雖然沒(méi)有規(guī)定請(qǐng)求數(shù)據(jù)的大小,但是瀏覽 器對(duì) URL 的長(zhǎng)度是有限制的,所以 get 請(qǐng)求不能攜帶大量的數(shù)據(jù)。
post 請(qǐng)求方式: ? 請(qǐng)求數(shù)據(jù)在請(qǐng)求實(shí)體中進(jìn)行發(fā)送,在 URL 中看不到具體的請(qǐng)求數(shù)據(jù),安全。適合數(shù)據(jù)量大的數(shù)據(jù)發(fā)送。
6、HTTP 協(xié)議之響應(yīng)響應(yīng)格式的結(jié)構(gòu): ? 響應(yīng)行(狀態(tài)行):HTTP 版本、狀態(tài)碼、狀態(tài)消息 ? 響應(yīng)頭:消息報(bào)頭,客戶端使用的附加信息 ? 空行:響應(yīng)頭和響應(yīng)實(shí)體之間的,必須的。 ? 響應(yīng)實(shí)體:正文,服務(wù)器返回給瀏覽器的信息
常見狀態(tài)碼: 200 OK //客戶端請(qǐng)求成功 400 Bad Request //客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤,不能被服務(wù)器所理解 401 Unauthorized //請(qǐng)求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和WWW-Authenticate 報(bào)頭域一起使用 403 Forbidden //服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù) 404 Not Found //請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的 URL 500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤 503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求,一段時(shí)間后可能恢復(fù)正常
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前名稱:187-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.rwnh.cn/article38/ppopp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、云服務(wù)器、小程序開發(fā)、響應(yīng)式網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容