亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

簡單談談dom解析xml和html

2019-11-14 21:11:35
字體:
來源:轉載
供稿:網友
簡單談談dom解析xml和html前言

文件對象模型(Document Object Model,簡稱DOM),是W3C組織推薦的處理可擴展標志語言的標準編程接口。html,xml都是基于這個模型構造的。這也是一個W3C推出的標準。java,python,javascript等語言都提供了一套基于dom的編程接口。

java使用dom解析xml

一段xml文檔, note.xml:

<?xml version="1.0" encoding="UTF-8"?><note>    <to id="1">George</to>    <from>John</from>    <heading>Reminder</heading>    <body>Don't forget the meeting!</body></note>

我們先使用w3c dom解析該xml:

@Testpublic void test() {    NodeList nodeList = doc.getChildNodes().item(0).getChildNodes();    System.out.PRintln("xml size: " + nodeList.getLength());    for(int i = 0; i < nodeList.getLength(); i ++) {        Node node = nodeList.item(i);        System.out.println(node.getNodeType());        System.out.println(node.getNodeName());    }}

輸出:

xml size: 93#text1to3#text1from3#text1heading3#text1body3#text

我們看到代碼輸出note節點的字節點的時候,有9個節點,但是xml文檔中note節點實際上只有to、from、heading、body4個節點。 那為什么是9個呢,原因是這樣的。選取幾個w3c規范中關于節點類型的描述:

節點類型描述nodeName返回值nodeValue返回值子元素類型常量值
Document表示整個文檔(DOM 樹的根節點)#documentnullElement(max. one),Comment,DocumentType9
Element表示 element(元素)元素element namenullText,Comment,CDATASection1
Attr表示屬性屬性名稱屬性值Text2
Text表示元素或屬性中的文本內容。#text節點內容None3
CDATASection表示文檔中的 CDATA 區段(文本不會被解析器解析)#cdata-section節點內容None4
Comment表示注釋#comment注釋文本None8

更多細節請查看w3c DOM節點類型

下面解釋一下文檔節點的字節點的處理過程:

其中紅色部分為Text節點,紫色部分是Element節點(只畫了部分)。</body>后面的也是一個Element節點,所有4個Element節點,5個Text節點。

所以輸出的內容中3 #text表示該節點是個Text節點,1 節點name是個Element節點,這與表格中表述的是一樣的。

測試代碼:

@Testpublic void test1() {    NodeList nodeList = doc.getChildNodes().item(0).getChildNodes();    System.out.println("xml size: " + nodeList.getLength());    for(int i = 0; i < nodeList.getLength(); i ++) {        Node node = nodeList.item(i);        if(node.getNodeType() == Node.TEXT_NODE) {            System.out.println(node.getNodeValue().replace("/n","hr").replace(' ', '-'));        }    }}

很明顯,我們把空格和回車鍵替換打印后發現我們的結論是正確的。

測試代碼:

@Testpublic void test2() {    System.out.println("doc type: " + doc.getNodeType());    NodeList nodeList = doc.getChildNodes().item(0).getChildNodes();    Node secondNode = nodeList.item(1);    System.out.println("element [to] node type: " + secondNode.getNodeType());    System.out.println("element [to] node name: " + secondNode.getNodeName());    System.out.println("element [to] node value: " + secondNode.getNodeValue());    System.out.println("element [to] children len: " + secondNode.getChildNodes().getLength());    System.out.println("element [to] children node type: " + secondNode.getChildNodes().item(0).getNodeType());    System.out.println("element [to] children node value: " + secondNode.getChildNodes().item(0).getNodeValue());    System.out.println("element [to] children node name: " + secondNode.getChildNodes().item(0).getNodeName());    Node attNode = secondNode.getAttributes().item(0);    System.out.println("attr type: " + attNode.getNodeType());}

輸出結果跟表格中是一樣的。

大家有興趣的話其他類型的節點比如CDATA節點大家可以自行測試~

Javascript使用dom解析html

html代碼:

<!DOCTYPE html><html><head>  <meta charset="utf-8">  <title>JS Bin</title></head><body>  <div>    <p>gogogo</p>  </div></body></html>

js代碼:

console.log(document.nodeType);var div = document.getElementsByTagName("div")[0]; //9console.log(div.nodeType); //1for(var i = 0;i < div.childNodes.length; i ++) {  console.log(div.childNodes[i].nodeType);}

分別輸出9,1,3,1,3跟我們在表格中對應~

總結

本次博客主要講解了dom解析xml和html。 以前使用java解析xml的時候總是使用一些第三方庫,比如jdom。 但是dom卻是w3c的規范,不止java,包括javascript,python這些主流語言也都主持,有了規范,語言只是實現了這些規范而已。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美不卡视频一区发布| 成人网中文字幕| 亚洲午夜小视频| 成人黄色片网站| 亚洲第一视频在线观看| 久久久免费精品| 亚洲一区二区三区香蕉| 91久久精品国产91性色| 欧美国产日韩一区二区三区| 亚洲视频在线观看网站| 国产精品高精视频免费| 日韩精品免费在线播放| 中文字幕久热精品在线视频| 亚洲电影中文字幕| 国产亚洲精品久久久久久| 欧美成在线观看| 久久九九精品99国产精品| 欧美综合在线第二页| 亚洲一区二区中文字幕| 色偷偷88888欧美精品久久久| 日韩av片免费在线观看| 久久久精品2019中文字幕神马| 国产亚洲欧洲高清一区| 这里只有精品丝袜| 中文字幕日韩欧美精品在线观看| 色偷偷91综合久久噜噜| 国产精品成人一区| 久久午夜a级毛片| 视频在线观看99| 欧美xxxx做受欧美| 国外日韩电影在线观看| 91在线观看免费高清| 最新69国产成人精品视频免费| 久久午夜a级毛片| 国内精品一区二区三区| 欧美性高潮在线| 亚洲精品天天看| 欧美性精品220| 久久精品国产2020观看福利| 色综合色综合网色综合| 亚洲白拍色综合图区| 亚洲国产私拍精品国模在线观看| 亚洲成人久久久| 亚洲精品成人久久久| 欧美二区在线播放| 色黄久久久久久| 亚洲91精品在线观看| 另类视频在线观看| 欧美性猛xxx| 日韩激情第一页| 97精品国产97久久久久久春色| 亚洲国产精品国自产拍av秋霞| 亚洲另类欧美自拍| 成人做爽爽免费视频| 日韩精品中文字幕在线观看| 久久夜色精品国产欧美乱| 国产精品美女在线| 国产精品福利久久久| 青青草原成人在线视频| 成人免费视频xnxx.com| 国产精品美女在线观看| 欧美激情精品久久久久久免费印度| 日本在线精品视频| 国产精品视频一区二区高潮| 欧美亚洲免费电影| 欧美国产日韩在线| 欧美激情综合亚洲一二区| 俺也去精品视频在线观看| 一区二区国产精品视频| 亚洲精品白浆高清久久久久久| 欧美成人免费小视频| 国产九九精品视频| 成人网在线免费看| 国产成人aa精品一区在线播放| 亚洲视频在线视频| 日韩网站免费观看高清| 亚洲午夜小视频| 亚洲aⅴ男人的天堂在线观看| 日韩中文字幕在线视频| 欧美午夜性色大片在线观看| 日韩精品在线观看视频| 久久天天躁狠狠躁夜夜爽蜜月| 91免费电影网站| 91精品国产色综合| 午夜精品久久久久久久白皮肤| 日韩动漫免费观看电视剧高清| 久久精品国产久精国产思思| 国产99久久精品一区二区永久免费| 日韩av中文字幕在线免费观看| 国产成人精品av在线| 国产主播精品在线| 日韩精品极品在线观看播放免费视频| 欧美一级淫片aaaaaaa视频| 国产www精品| 久久视频这里只有精品| 欧美亚洲国产视频小说| 精品国产91久久久久久老师| 中文字幕精品久久久久| 欧美一区二区三区四区在线| 日本久久久久久久久| 国产成人精品在线| 中文字幕精品一区二区精品| xxx成人少妇69| 日韩少妇与小伙激情| 久久久久久久久久久网站| 欧美成人激情图片网| 18性欧美xxxⅹ性满足| 成人免费直播live| 中文字幕在线看视频国产欧美| 国产一区香蕉久久| 久久久久日韩精品久久久男男| 国产精品手机播放| 国产精品福利观看| 中文字幕精品网| 亚洲人成电影网站色| 97久久精品人人澡人人爽缅北| 成人黄色免费看| 久久精品青青大伊人av| 亚洲激情视频在线播放| 日韩av影院在线观看| 中文字幕欧美国内| 亚洲精品99999| 国产精品户外野外| 国产精品夜色7777狼人| 色黄久久久久久| 日韩高清欧美高清| 久久人人爽人人爽人人片亚洲| 久久久国产精品免费| 成人乱人伦精品视频在线观看| 日韩成人av一区| 久久精品视频99| 欧美老妇交乱视频| 欧美日韩国产精品一区二区不卡中文| 欧美激情视频一区二区三区不卡| 国产精品都在这里| 97在线看免费观看视频在线观看| 中文在线资源观看视频网站免费不卡| 久久久免费在线观看| 欧美一区二粉嫩精品国产一线天| 色偷偷噜噜噜亚洲男人| 国产午夜精品全部视频在线播放| www.99久久热国产日韩欧美.com| 一区三区二区视频| 欧美整片在线观看| 成人网欧美在线视频| 亚洲精品中文字幕有码专区| 亚洲第一区在线| 日日骚av一区| 久久国产精品免费视频| 成人国产精品一区| 日本韩国欧美精品大片卡二| 亚洲欧美三级伦理| 亚洲国产天堂久久国产91| 国产美女久久久| 亚洲国产精品人久久电影| 久久亚洲精品国产亚洲老地址| 日本高清视频一区| 欧美中文在线观看国产| 欧美极品少妇xxxxⅹ裸体艺术| 欧美日韩国产成人高清视频| 欧美尤物巨大精品爽| 97在线看福利| 亚洲精品自拍第一页| 亚洲欧美中文字幕|