日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dom4J解析技术

發布時間:2025/4/9 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dom4J解析技术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??? 前面的話?


?? 本文主要講解有關Dom4j技術和xpath配合下的優化!

??? 目錄:

?? 為什么需要Dom4J

?? DOM4J怎么用

? ?xpath怎么配合DOM4J?


?

????? 一? 為什么需要Dom4J

????????????? ? 一門技術出現必定是有原因的,一來是解決某方面技術問題,再者可能是優化性能。

?????????????xmlDom 簡單方便,可以將xml文檔以"DOM樹"的形式裝進內存,節點對象操作元素。但xml數據量較大時,消耗內存也大。sax訪問元素方便,不能對元素crud。都是有明顯缺點的。

????????????Dom4j的出現,正好優化了xml解析。

???????????????Dom4j和xmlDom 從操作上看很相似,可以說只是對應的API不一樣。

?

??????????? 值得注意的是:

??????????? DOM4J不是sun公司自己的產品,所以沒有提供服務的jar包,我們可以自己下載DOM4J-API包,里面有API(index-html),jar包等。

????


?

?????

??? ? 二 ? DOM4J怎么用

???????????? 準備好示例xml

1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <class> 4 <stu id="SP001"> 5 <name>小劉</name> 6 <age>12</age> 7 <Math>100</Math> 8 <English>90</English> 9 </stu> 10 <stu id="sp002"> 11 <name>小明</name> 12 <age>12</age> 13 <Math>98</Math> 14 <English>90</English> 15 </stu> 16 <stu id="sp003"> 17 <name>小張</name> 18 <age>12</age> 19 <Math>83</Math> 20 <English>91</English> 21 </stu> 22 </class>

?(1)訪問元素

Element e= document.getRootElement().Element('stu');Element nameNode= (Element) e.elements("name").get(0); //等價于e.Element('name'); System.out.println( nameNode.getText());//小明

?

?(2)插入元素

Element stuEle=DocumentHelper.createElement("stu"); stuEle.addAttribute("id", "sp003"); //添加屬性(id) Element nameEle=DocumentHelper.createElement("name");nameEle.setText("宋江");Element ageEle=DocumentHelper.createElement("age");ageEle.setText("11");Element MathEle=DocumentHelper.createElement("Math");MathEle.setText("100"); //將元素掛到stu上 stuEle.add(nameEle); stuEle.add(ageEle); stuEle.add(MathEle);
//刷新,這很重要。

?

?(3)修改

?(4)刪除

??? FIND:訪問屬性時: node.Elements('NodeName');? 里面的元素只能是node的直接子節點,不可以是孫子(包括以后)。也不能根據id,name屬性來訪問元素。

?

???? 那么為提高查詢效率,需要借助xpath;

?


?

三:xpath怎么配合DOM4J?

? (1)什么是xpath

??? xpath操作xml有點像sql語言查詢數據庫的效果,簡單的說,xpath是一種查詢格式。

?? 示例xml

<?xml version="1.0" encoding="UTF-8"?> <AAA><BBB id="sp001">B1</BBB><BBB id="sp002" name="Bbb"><CCC>C1</CCC><AAA><BBB>B2</BBB></AAA><BBB>B3</BBB></BBB></AAA>

  看下面xpath配合DOM4j------注意xpath不單獨使用

?

List list=doc.selectNodes("/AAA/BBB"); // "/AAA/BBB"就是xpath格式System.out.println(list.size()); //2;//(1)xpath最經典的用法一Element list1= (Element)doc.selectSingleNode("/AAA/BBB[1]");// 拿到屬性和TextSystem.out.println("id||"+list1.attributeValue("id"));System.out.println("TextContent||"+list1.getText());// (2)經典用法二//通過id,name屬性選出元素,相等于getElementById("ID");getElementsByTagName()//取出id=‘sp001’的BBB元素;Element node= (Element)(doc.selectNodes("//BBB[@id='sp001']").get(0));System.out.println(node.getText()); //B1;//取出name屬性為"Bbb"的BBB元素Element n= (Element) doc.selectSingleNode("//BBB[@name='Bbb'][1]");System.out.println(n.attributeCount()); //2

  

??? xpath細節:

??? (1) "/AAA/BBB"-----AAA下的BBB集合(只是子節點), /有點路徑的意思。

?????? 再者:"/AAA/BBB[1]"----就是具體指第1個BBB元素(這里的1不是index=0開始的,就是實際上的1).

??? (2) "//AAA"-----指的是xml中全部AAA元素;

?????? ?比如:"//AAA/BBB"---父元素是AAA的全部BBB元素集合(List)

?? ?(3) "//BBB[@id='sp001']"-----取出id=‘sp001’的BBB元素集合(List)

??????? ?"//BBB[@name="Bbb"]"-----取出name="Bbb"的元素集合(List)

???? ? ? "//BBB[@id='sp001'][1]''----取出第1個元素

?? ?find:? 通過xpath的修飾,DOM4J的查詢功能就很強大了。適用于大多數情況,一般解析xml文檔都是使用它。

??

???

??? ?

?

????

???

????

轉載于:https://www.cnblogs.com/huang-1995/p/5862670.html

總結

以上是生活随笔為你收集整理的Dom4J解析技术的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。