欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

輕裝上陣,安卓工程師之路---day05(Dom4J & Tom

系統(tǒng) 2394 0

?

01?Java-DOM4J(DOM4J 開源組織 )-DOM 解析 XML 文件

解析:是用 Java 等相關(guān)技術(shù)將 XML 文件中有用的信息提取

出來的過程叫解析。

解析分為二個大類別

1.?DOM Document?Object?Model )類別

一次性將硬盤中的 XML 文件加載的內(nèi)存形成一個倒?fàn)畹臉浣Y(jié)構(gòu),從根開始從上向下依次遍歷,獲取有用節(jié)點的內(nèi)容

2.?SAX(Simple?Api?for?Xml) 類別

分多次將硬盤中的 XML 文件加載的內(nèi)存中,以事件的方式去解析節(jié)點中有用的內(nèi)容

?

目前 :

1.?空間不是問題,問題是時間, 所以 W3C 組織推薦使用 DOM 技術(shù)解析。

?

// 創(chuàng)建 XML 文件,無文件則創(chuàng)建;有文件則覆蓋

Document?xmlDocument?=?DocumentHelper.createDocument();

?

// 將符合條件的字符串轉(zhuǎn)成 XML 文件

Document?xmlDocument?=?DocumentHelper.parseText(str);

?

// 創(chuàng)建 dom4j 核心解析器

SAXReader?saxReader?=?new?SAXReader();

?

// 讀取硬盤中的 xml 文件

Document?xmlDocument?=?saxReader.read(new?File("E:/bookstore.xml"));

?

// 寫出到硬盤文件

XMLWriter?xmlWriter?=?new?XMLWriter(new?FileWriter("E:\\test.xml"));

xmlWriter.write(document);

xmlWriter.close();

?

Document 對象寫入 XML 文件?

1. 文檔中全為英文 , 不設(shè)置編碼 , 直接寫入的形式 .??

XMLWriter?writer?=?new?XMLWriter(new??FileWriter("output.xml"));??

writer.write(document);??writer.close();

?

2. 文檔中含有中文 , 設(shè)置編碼格式寫入的形式 .

OutputFormat?format?=?OutputFormat.createPrettyPrint();//? 指定 XML 編碼 ???????????????????

format.setEncoding("GBK");???????

XMLWriter?writer?=?new?XMLWriter(newFileWriter("output.xml"),format);

writer.write(document);writer.close();

?

字符串與 XML 的轉(zhuǎn)換?

1. 將字符串轉(zhuǎn)化為 XML

????? String?text?=?"<members>?<member>sitinspring</member></members>";

? Document?document?=?DocumentHelper.parseText(text);

2. 將文檔或節(jié)點的 XML 轉(zhuǎn)化為字符串 .

?

類加載器 : 我們的所有程序文件,都是由類加載器去讀取硬盤中的內(nèi)容,以流的方式加載到 JVM 中的

類加載器分為不同的類別,如果是讀取我們自已創(chuàng)建的程序文件,始終只是一個類加載器去負(fù)責(zé)讀取

類加載器不會亂去加載,只會去類目錄下加載文件,即在開發(fā)工具的默認(rèn)是 src 目錄下加載

?

?

?

?

02?XPATH 表達(dá)式 (//goods[@id='isbn100'])

XPATH 就是一個字符串,不過這個字符串有其特殊的含義, 利用其特殊含義能快速定位節(jié)點。

使用 XPath 必須導(dǎo)入 jaxen-1.1-beta-6.jar ?,? dom4j lib 文件夾下

jaxen-1.1-beta-6.jar

/tv/a/b/c/d 表示從根節(jié)點開始查詢,一直查詢到 d 節(jié)點

?

?

XPATH 使用方法

查詢節(jié)點

獲取所有符合條件的節(jié)點

selectNodes(String?xpathExpression)? 返回 List 集合

獲取符合條件的單個節(jié)點

selectSingleNode(String?xpathExpression)? 返回一個 Node 對象。

如果符合條件的節(jié)點有多個,那么返回第一個。?

?

03?web 入門

WEB 應(yīng)用,就是屬于 B/S 軟件結(jié)構(gòu)

所有的客戶端和所有的服務(wù)器要通信,必須采用雙方認(rèn)可的規(guī)則,即 HTTP (超文本傳輸協(xié)議)

?

Web 應(yīng)用的特點

1_ 服務(wù)器響應(yīng)客戶端的是 HTML

2_ 客戶端采用 URL 來定位全世界唯一的資源

3_ 為了便于記憶,不用 IP ,用域名來對 IP 進(jìn)行封裝

4_ 客戶端與服務(wù)器都采用 HTTP 這種應(yīng)用層的協(xié)議,底層是 TCP/IP 協(xié)議

?

web 網(wǎng)站上有二類資源,一類是動態(tài)資源,一類是靜態(tài)資源,

靜態(tài)資源用 html/css 技術(shù)完成,動態(tài)資源用 servlet/jsp/asp/php 技術(shù)完成,

凡是用 java 技術(shù)來開發(fā) web 應(yīng)用中的動態(tài)資源,統(tǒng)稱為 JavaWeb

?

客戶端訪問服務(wù)器,不管服務(wù)器是否有對應(yīng)的資源,服務(wù)器都會給客戶端以響應(yīng),

所以響應(yīng)可分為正確響應(yīng)和錯誤響應(yīng)

?

客戶端使用 URL 來訪問服務(wù)器的資源:以下例如:

http://www.baidu.com:8080/mail/index.html 回車

?

http:// 協(xié)議名稱,這只是 web 中最常用的協(xié)議,例如: https:// ftp:// ,等等

www.baidu.com 全世界唯一的一個域名,通常一個域名對應(yīng)著一個唯一的 IP 地址

8080 表示服務(wù)器上的一個資源所占用的端口號,通常是不變的, HTTP 協(xié)議默認(rèn)端口號為 80

/mail 表示服務(wù)器上的一個資源的路徑

/index.html 表示服務(wù)器上的一個具體資源名稱

?

學(xué)習(xí) Web 應(yīng)用之前,為什么要用 Web 服務(wù)器呢?

因為如果 Web 服務(wù)器,不能將本地資源讀取出來,并響應(yīng)給遠(yuǎn)程的客戶端,

這時 Web 服務(wù)器相當(dāng)于一個中介,接收客戶端的請求,并做出對應(yīng)的響應(yīng)

我們可以將 Web 服務(wù)器理解為本例的 Demo01 這么一個網(wǎng)絡(luò)應(yīng)用程序

?

什么 JavaEE 規(guī)范?

JavaEE 規(guī)范表示多個具體技術(shù)的統(tǒng)稱,例如: Servlet Jsp JavaBean JDBC JavaMail ,。。。。

?

04? 常見服務(wù)器簡介

oracle--WebLogic--- 適合于大型應(yīng)用

ibm-----WebSphere--- 適合于大型應(yīng)用

apache---tomcat--- 適合于小型應(yīng)用 --- java 源免費

?

啟動 tomcat 服務(wù)器后,在瀏覽器地址欄輸入如下 URL http://127.0.0.1:8080 回車

127.0.0.1 是本機 IP 地址

localhost 是本機域名 ,在 tomcat 中默認(rèn)的虛擬主機名字就叫做 localhost

192.168.32.9 局域網(wǎng)中本機 IP 地址

提倡用 127.0.0.1 這個

?

?

05?Tomcat 的安裝,啟動與目錄結(jié)構(gòu)

?

通過瀏覽器訪問的應(yīng)用,我們叫 web 應(yīng)用,

這里說的瀏覽器可以是 PC 瀏覽器,也可以是移動設(shè)備上的瀏覽器

?

所有的 web 資源,都應(yīng)該放在一個目錄下保存,該目錄我們叫 web 應(yīng)用的根目錄,也叫網(wǎng)站的根目錄

?

創(chuàng)建好的 web 應(yīng)用,必須將其根目錄放到 web 服務(wù)器管理,方可被外界訪問,這個過程叫 虛擬目錄的映射

?

06? Tomcat 中設(shè)置虛擬目錄和主機 / 網(wǎng)站 / 站點

<Context?

????????docBase=" 真實 web 應(yīng)用根目錄所有的位置 "?

path=" / 開頭的虛擬目錄名字 "?/>

?

配置虛擬目錄

???修改 tomcat/conf/server.xml 文件

???<Host>

??? <Context?docBase="E:\mail"?path=""?/>

<Context?docBase="E:\mail"?path="/mail"?/>

<Context?docBase="E:\mail"?path="/xx/mail"?/>

<Context?docBase="E:\mail"?path="/xx/yy/mail"?/>

???</Host>

?

?

配置虛擬主機 / 網(wǎng)站,即 tomcat 服務(wù)器中有一個虛擬的 www.baidu.com 網(wǎng)站,目前只能供自己訪問,不能供外界訪問

???修改 tomcat/conf/server.xml 文件

???<Host?name="www.baidu.com"??appBase="E:\">

?????? <Context?docBase="E:\mail"?path=""?/>

<Context?docBase="E:\mail"?path="/mail"?/>

<Context?docBase="E:\mail"?path="/xx/mail"?/>

<Context?docBase="E:\mail"?path="/xx/yy/mail"?/>

???</Host>

???修改 C:\Windows\System32\drivers\etc\Hosts 文件

???#127.0.0.1?????www.baidu.com

???

?

???最終效果:

???http://www.baidu.com:8080/mail/index.html 回車

???http://www.baidu.com:8080/index.html 回車

???http://www.baidu.com/index.html 回車( HTTP 協(xié)議默認(rèn)是 80 ,修改 tomcat 的端口號為 80

???http://www.baidu.com/index.html 回車( path=""

???http://www.baidu.com 回車(默認(rèn)歡迎文件)

?

???www.baidu.com 虛擬主機 / 網(wǎng)站

???/mail 虛擬目錄

?

輸入域名,計算機的解析過程

瀏覽器先去本地找 Hosts 文件,將域名解析成 ip 地址

如果本地找不到,再去 internet dns 服務(wù)器找域名對應(yīng)的 ip 地址

如果本地找到了,不去 internet 找了

07?web 應(yīng)用結(jié)構(gòu)以及在 MyEclipse 中創(chuàng)建 web 應(yīng)用

??????

?

?

?

?

?

?

?

Dom4j? 的重點代碼賞析:

?

?

1.dom4j 基本使用

/**

?*? 演示使用 dom4j 如下內(nèi)容

?*?1 )創(chuàng)建一個新的 xml 文件

?*?2 )將一個符合 xml 文件內(nèi)容的字符串轉(zhuǎn)成 xml 文件

?*?3 )加載已存在的 xml 文件到內(nèi)存,形成一個倒?fàn)畹臉浣Y(jié)構(gòu),根就是 Document 對象

?*/

?

/**

?*?? 創(chuàng)建一個新的 xml 文件

?*/

public?static?void?type01()?throws?Exception?{

// 創(chuàng)建一個內(nèi)存對象 Document ,它就表示硬盤中 xml 文件

Document?xmlDocument?=?DocumentHelper.createDocument();

// 將內(nèi)存中的對象 Document 寫入到硬盤中,形成一個 xml 文件

XMLWriter?xmlWriter?=?new?XMLWriter(new?FileOutputStream(new?File("E:/new.xml")));

xmlWriter.write(xmlDocument);

xmlWriter.close();

}

?

/**

?*? 將一個符合 xml 文件內(nèi)容的字符串轉(zhuǎn)成 xml 文件

?*/

public?static?void?type02()?throws?Exception?{

// 創(chuàng)建符合 xml 內(nèi)容的字符串

String?str?=?"<root><city> 廣州 </city></root>";

// 將字符串轉(zhuǎn)成 document 對象

Document?xmlDocument?=?DocumentHelper.parseText(str);

// 將內(nèi)存中的 document 對象輸出到硬盤,形成一個 xml 文件

XMLWriter?xmlWriter?=?new?XMLWriter(new?FileOutputStream(new?File("E:/new.xml")));

xmlWriter.write(xmlDocument);

xmlWriter.close();

}

?

/**

?*? 加載已存在的 xml 文件到內(nèi)存,形成一個倒?fàn)畹臉浣Y(jié)構(gòu),根就是 Document 對象

?*/

public?static?void?type03()?throws?Exception?{

// 創(chuàng)建 dom4j 核心解析器

SAXReader?saxReader?=?new?SAXReader();

// 讀取硬盤中的 xml 文件

Document?xmlDocument?=?saxReader.read(new?File("E:/bookstore.xml"));

// 判斷是否已讀取到 xml 文件

System.out.println(xmlDocument!=null?" 已讀取 xml 文件 ":" 未讀取 xml 文件 ");

}

?

?

?

/**

?*? 使用 dom4j 解析器

?*?1 )獲取根節(jié)點的名字?

?*?2 )獲取根節(jié)點下的直接子節(jié)點的個數(shù)

?*/

public?class?Demo02?{

public?static?void?main(String[]?args)?throws?Exception{

// 創(chuàng)建 dom4j 解析器對象

SAXReader?saxReader?=?new?SAXReader();

// 創(chuàng)建 InputStream 對象,指向硬盤的 xml 文件

InputStream?is?=?new?FileInputStream(new?File("E:\\bookstore.xml"));

// 通過字節(jié)流,加載硬盤中的 xml 文件到內(nèi)存

Document?xmlDocument?=?saxReader.read(is);

// 獲取根節(jié)點

Element?rootElement?=?xmlDocument.getRootElement();

// 顯示根節(jié)點的名字

System.out.println(rootElement.getName());

// 獲取根節(jié)點下的直接子節(jié)點的個數(shù)和名字

List<Element>?list?=?rootElement.elements("book");

System.out.println(" 根節(jié)點下有 "+list.size()+" 直接子節(jié)點 ");

}

}

?

?

/**

?*? 使用 dom4j 解析器

?*?1 )解析所有 book 節(jié)點屬性值

?*?2 )解析所有 book 節(jié)點下子節(jié)點中的內(nèi)容

?*/

public?class?Demo03?{

public?static?void?main(String[]?args)?throws?Exception{

// 創(chuàng)建 dom4j 解析器對象

SAXReader?saxReader?=?new?SAXReader();

// 創(chuàng)建 InputStream 對象,指向硬盤的 xml 文件

InputStream?is?=?new?FileInputStream(new?File("E:\\bookstore.xml"));

// 通過字節(jié)流,加載硬盤中的 xml 文件到內(nèi)存

Document?xmlDocument?=?saxReader.read(is);

// 獲取根節(jié)點

Element?rootElement?=?xmlDocument.getRootElement();

// 獲取根節(jié)點下所有 book 子節(jié)點所形成的集合

List<Element>?list?=?rootElement.elements("book");

// 迭代

for(Element?element?:?list){

// 獲取 book 節(jié)點的 id 屬性值

String?id?=?element.attributeValue("id");

// 分別獲取 book 節(jié)點的 title/auth/price 子節(jié)點的內(nèi)容

String?title?=?element.element("title").getText().trim();

String?auth?=?element.element("auth").getText().trim();

String?price?=?element.element("price").getText().trim();

// 將來我們可以將上述屬性值封裝到 JavaBean 對象中的所有屬性中,加入到 List<JavaBean> 集合

System.out.println(id+":"+title+":"+auth+":"+price);

System.out.println("------------------------------");

}

}

}

?

/**

?*? 使用 dom4j 解析器

?*?1 )修改節(jié)點的屬性值

?*?2 )修改節(jié)點中的內(nèi)容

?*?3 )將內(nèi)存中的 document 對象,寫入到硬盤中的 xml 文件

?*/

public?class?Demo04?{

public?static?void?main(String[]?args)?throws?Exception{

// 創(chuàng)建 dom4j 解析器對象

SAXReader?saxReader?=?new?SAXReader();

// 創(chuàng)建 InputStream 對象,指向硬盤的 xml 文件

InputStream?is?=?

Demo04.class.getClassLoader().getResourceAsStream("cn/itcast/android/xml/bookstore.xml");

// 通過字節(jié)流,加載硬盤中的 xml 文件到內(nèi)存

Document?xmlDocument?=?saxReader.read(is);

// 獲取根節(jié)點

Element?rootElement?=?xmlDocument.getRootElement();

// 獲取根節(jié)點下所有 book 子節(jié)點所形成的集合

List<Element>?list?=?rootElement.elements("book");

// 迭代

for(Element?element?:?list){

// 如果 book 節(jié)點的 id 屬性值是 "it201501" 的話

if(element.attributeValue("id").equals("it201501")){

// 修改 book 節(jié)點的 id 屬性值

element.addAttribute("id","it201601");

}

// 如果 book 節(jié)點的 price 子節(jié)點的內(nèi)容為 222 的話

if(element.element("price").getText().equals("222")){

// 修改 book 節(jié)點的 price 子節(jié)點內(nèi)容

element.element("price").setText("333");

}

}

// 上述修改只在內(nèi)存中,還得將內(nèi)存中的 document 對象寫入到硬盤的 xml 文件中

// 緊縮格式: createCompactFormat()

// 優(yōu)美格式: createPrettyPrint()

OutputFormat?format?=?OutputFormat.createPrettyPrint();

OutputStream?os?=?new?FileOutputStream(new?File("E:/bookstore.xml"));

XMLWriter?xmlWriter?=?new?XMLWriter(os,format);

xmlWriter.write(xmlDocument);

xmlWriter.close();

}

}

?

/**

?*? 使用 dom4j 解析器

?*?1 )創(chuàng)建新節(jié)點,即 Element

?*?2 )為節(jié)點添加屬性和子節(jié)點

?*?3 )將新節(jié)點添加到所有原來節(jié)點之后和之前

?*/

public?class?Demo05?{

public?static?void?main(String[]?args)?throws?Exception{

// 創(chuàng)建 dom4j 解析器對象

SAXReader?saxReader?=?new?SAXReader();

// 創(chuàng)建 InputStream 對象,指向硬盤的 xml 文件

Document?xmlDocument?=?saxReader.read(Demo05.class.getClassLoader().getResource("cn/itcast/android/xml/bookstore.xml"));

// 獲取根節(jié)點

Element?rootElement?=?xmlDocument.getRootElement();

// 獲取根節(jié)點下的所有子節(jié)點

List<Element>?list?=?rootElement.elements("book");

?

?

// 創(chuàng)建新 book 節(jié)點

Element?newBookElement?=?DocumentHelper.createElement("book");

// 為新 book 節(jié)點設(shè)置屬性值?

newBookElement.addAttribute("id","it201503");

// 為新 book 節(jié)點添加子節(jié)點及其內(nèi)容

newBookElement.addElement("title").setText("ios 編程指南 ");

?

?

// 將新 book 節(jié)點添加到所有 book 節(jié)點之后

//list.add(newBookElement);

?

// 將新 book 節(jié)點插入到第一個位置

list.add(1,newBookElement);

?

// document 對象輸出到硬盤中,形成 xml 文件

OutputFormat?format?=?OutputFormat.createPrettyPrint();

OutputStream?os?=?new?FileOutputStream(new?File("E:/bookstore.xml"));

XMLWriter?xmlWriter?=?new?XMLWriter(os,format);

xmlWriter.write(xmlDocument);

xmlWriter.close();

}

}

?

XPATH 用法

/**

?*? 使用 dom4j 解析器

?*? 傳統(tǒng)方式定位 d 標(biāo)簽

?*?XPATH 方式定位 d 標(biāo)簽

?*/

public?class?Demo06?{

public?static?void?main(String[]?args)?throws?Exception{

// 創(chuàng)建 dom4j 解析器對象

SAXReader?saxReader?=?new?SAXReader();

// 創(chuàng)建 InputStream 對象,指向硬盤的 xml 文件

Document?xmlDocument?=?

saxReader.read(

Demo06.class.getClassLoader().getResource("cn/itcast/android/xml/tv.xml"));

//Element?rootElement?=?xmlDocument.getRootElement();

//String?name?=?rootElement.element("a").element("b").element("c").element("d").getText().trim();

//System.out.println(name);

//System.out.println("----------------------------------");

//String?xpath?=?"/tv/a/b/c/d";

//String?xpath?=?"http://d";

//String?age?=?"23";

//String?xpath?=?"http://d[@age='"+age+"']";

String?xpath?=?"http://e[@name=' 哈哈 '?and?@pass='123']";

Element?element?=?(Element)?xmlDocument.selectSingleNode(xpath);

//List<Element>?list?=?xmlDocument.selectNodes(xpath);

if(element!=null){

String?name?=?element.getText().trim();

System.out.println(name);

}else{

System.out.println(" 查無此人 ");

}

}

}

?

輕裝上陣,安卓工程師之路---day05(Dom4J & Tomcat)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久秋霞理论电影 | 久久九九久精品国产 | 美女国内精品自产拍在线播放 | 男人和女人做爰毛片试看 | www.99色 | 在线国产欧美 | 欧美一区二区三区免费不卡 | 国产福利视频在线 | 成人在线免费视频观看 | 99动漫| 毛片免费观看视频 | 91短视频社区在线观看 | 2019偷偷狠狠的日日 | 久久精品中文 | 亚洲视频国产 | 色噜噜狠狠色综合欧洲selulu | 色综合久久88色综合天天 | 色播欧美 | 亚洲国产欧洲综合997久久 | 91电影| 小明看片成人永久在线观看 | 久草在线精品视频 | 国产在线视频网 | 欧美日韩视频在线 | 欧美日韩在线免费 | 精品久久久久久久久久久 | 草草线在成人免费视频 | 国产午夜视频 | 成人免费视频网站在线观看 | 欧美一区二区三区久久精品 | 亚洲福利在线观看 | 久久精片 | 乱码中文字幕人成在线 | 精品久| 看免费一级毛片 | 成年人激情在线 | 国产精品亚洲一区 | 国产亚洲精彩视频 | 久久亚洲国产精品 | 国产成人综合在线 | 国产欧美曰韩一区二区三区 |