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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Dom4j操作XML

發(fā)布時(shí)間:2023/12/20 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dom4j操作XML 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

dom4j幫助文檔在dom4j-1.6.1/docs/guide.html文件里面,全部是英文,但是基本上應(yīng)該能看懂。

?

1、? 四種操作xml的方式:SAX,DOM,JDOM,DOM4J.

2、? DOM(Document Object Model):意思是把整個(gè)xml做為一個(gè)整體對(duì)象,直接全部放到內(nèi)存里面,不管xml文件有多大;

3、? SAX=Sample API for XML:假如xml文件有2G,用第一種方式,是很困難的,SAX用的是一種類似流媒體方式進(jìn)行的。

DOM和SAX是Java的API,處理xml文件的時(shí)候,相對(duì)來說是比較困難的,于是出現(xiàn)了下面兩種框架,包裝了上面兩個(gè)框架。

4、? JDOM:

5、? DOM4J:

6、? 利用DOM4J解析xml文件(讀取所有的屬性節(jié)點(diǎn))。

Document可以理解為整個(gè)文檔對(duì)象

取root節(jié)點(diǎn)。Document.getRootElement()返回的是一個(gè)Element(元素)

7、? 理解運(yùn)用xpath,path就是路徑,xpath在xml文件里面找到特定的節(jié)點(diǎn)。

Document.selectNodes(“//hibernate-mapping/class/property”) ?//其中hibenate-mapping是根節(jié)點(diǎn)。做變org.dom4j.Node對(duì)象返回的。

Document.selectSingleNodes(“//hibernate-mapping/class/property”)//只拿第一個(gè)。

基中@name是property的屬性名valueOf是拿出name的值;

需要加入DOM4J里面的jaxen包

8、? DOM4J的生成xml文件

9、? 用FileWriter生成xml文件的時(shí)候,可能沒有格式,可以用XMLWriter類,這樣自動(dòng)進(jìn)行美化。

10、 ?DOM4J修改xml文件;很少用。

11、 ?自動(dòng)生成代碼往往用的是:freemarker或velocity,這是常用的。用dom4j生成也很少用。

12、 ?怎么用表里面的結(jié)構(gòu)生成xml文件。

13、 JavaDB

a) ? ? ? Properties對(duì)象:可以理解為一個(gè)表格對(duì)應(yīng)key,value

14、 ?Databasemetadata,可以能過這個(gè)JDK類,讀取數(shù)據(jù)庫的表結(jié)構(gòu),通過這個(gè)表結(jié)構(gòu)做一些自己的事情。(熟悉用法)通過JDK文檔和google學(xué)習(xí)

15、 ? 元數(shù)據(jù)就是數(shù)據(jù)的數(shù)據(jù),用來描述數(shù)據(jù)的數(shù)據(jù)。

16、 ? DWR,對(duì)Ajax框架封住得比較好,是類和java的結(jié)合。

<?xml version="1.0" encoding="UTF-8"?> <node> <book> <title>JAVA編程思想</title> <author>XX</author> <price>12.5</price> </book> <book bookid="isbsb-111"> <title>Effective Java</title> <author>Jack</author> <price>22.5</price> <批發(fā)價(jià)>18</批發(fā)價(jià)> </book> </node>

demo:

package com.itheima.dom4j.test;import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.Node; import org.junit.Test;import com.itheima.utils.Dom4jUtil;/** 1、得到某個(gè)具體的節(jié)點(diǎn)內(nèi)容 2、遍歷所有元素節(jié)點(diǎn) 3、修改某個(gè)元素節(jié)點(diǎn)的主體內(nèi)容 4、向指定元素節(jié)點(diǎn)中增加子元素節(jié)點(diǎn) 5、向指定元素節(jié)點(diǎn)上增加同級(jí)元素節(jié)點(diǎn) 6、刪除指定元素節(jié)點(diǎn) 7、操作XML文件屬性Element root =document.getRootElement();//得到根結(jié)點(diǎn) root.nodeCount();//根結(jié)點(diǎn)下,子結(jié)點(diǎn)個(gè)數(shù) ele.node(i);//第i個(gè)結(jié)點(diǎn) authorEle.getText();取結(jié)點(diǎn)的文本 elements("書");所有的書結(jié)點(diǎn) element("作者");得到一個(gè)作者*/ public class Dom4jTest {// 1、得到某個(gè)具體的節(jié)點(diǎn)內(nèi)容 在第二本書的作者 @Testpublic void test1(){try {//1.得到Document對(duì)象Document document = Dom4jUtil.getDocument();//2.得到根結(jié)點(diǎn)//Element root = document.getRootElement();//3.找第二本書//Element node = (Element)root.elements("書").get(1);//4再找第二本書的作者//Element authorEle = node.element("作者");//----------xpath--------------Node authorEle = document.selectSingleNode("//書[2]/作者");//5.讀取文本 System.out.println(authorEle.getText());} catch (Exception e) {e.printStackTrace();}}//2、遍歷所有元素節(jié)點(diǎn) @Testpublic void test2(){try {//1.得到Document對(duì)象Document document = Dom4jUtil.getDocument();//2.得到根結(jié)點(diǎn)Element root = document.getRootElement();//3.調(diào)用 treeWalk(root);} catch (Exception e) {e.printStackTrace();}}public void treeWalk(Element ele){System.out.println(ele.getName());for(int i=0;i<ele.nodeCount();i++){Node node = ele.node(i);//第i個(gè)結(jié)點(diǎn)if(node instanceof Element){treeWalk((Element)node);}}}//3、修改某個(gè)元素節(jié)點(diǎn)的主體內(nèi)容 第一本書的作者改為于磊 @Testpublic void test3(){try {//1.得到Document對(duì)象Document document = Dom4jUtil.getDocument();//2.得到根結(jié)點(diǎn)//Element root = document.getRootElement();//Element bookEle = root.element("書");//找到第一本書//3.找到第一本書的作者//Element authorEle = bookEle.element("作者");//authorEle.setText("于磊");//----------------xpath------------------------Node node = document.selectSingleNode("/書架/書[1]/作者");node.setText("于總");//4.寫回XML Dom4jUtil.writeDocument2Xml(document);} catch (Exception e) {e.printStackTrace();}}//4、向指定元素節(jié)點(diǎn)中增加子元素節(jié)點(diǎn) 在第二本書的子結(jié)點(diǎn)中添加一個(gè)批發(fā)價(jià) @Testpublic void test4(){try {//1.得到Document對(duì)象Document document = Dom4jUtil.getDocument();//2.得到根結(jié)點(diǎn)//Element root = document.getRootElement();//3.找到第二本書//Element bookEle = (Element)root.elements().get(1);//bookEle.addElement("批發(fā)價(jià)").setText("80");//-------------xpath---------------------------Element node = (Element)document.selectSingleNode("/書架/書[2]");node.addElement("批發(fā)價(jià)").setText("80");//4.寫回XML Dom4jUtil.writeDocument2Xml(document);} catch (Exception e) {e.printStackTrace();}}//5、向指定元素節(jié)點(diǎn)上增加同級(jí)元素節(jié)點(diǎn) 在第一本書的售價(jià)前面,添加一個(gè)內(nèi)部價(jià) @Testpublic void test5(){try {//1.得到Document對(duì)象Document document = Dom4jUtil.getDocument();//2.得到根結(jié)點(diǎn)Element root = document.getRootElement();Element bookEle = root.element("書");//Element priceEle = bookEle.element("售價(jià)");//通過DocumentHelper類提供的createElement()創(chuàng)建一個(gè)結(jié)點(diǎn)Element innerPriceNode = DocumentHelper.createElement("內(nèi)部價(jià)");innerPriceNode.setText("200");bookEle.elements().add(2, innerPriceNode);//4.寫回XML Dom4jUtil.writeDocument2Xml(document);} catch (Exception e) {e.printStackTrace();}}//6、刪除指定元素節(jié)點(diǎn) 刪除第一本書的內(nèi)部價(jià)結(jié)點(diǎn) @Testpublic void test6(){try {//1.得到Document對(duì)象Document document = Dom4jUtil.getDocument();//2.得到根結(jié)點(diǎn)Element root = document.getRootElement();//找到第一本書Element bookEle = root.element("書");Element innerPriceEle = bookEle.element("內(nèi)部價(jià)");bookEle.remove(innerPriceEle);//刪除子結(jié)點(diǎn)//4.寫回XML Dom4jUtil.writeDocument2Xml(document);} catch (Exception e) {e.printStackTrace();}}//7、操作XML文件屬性 在第二本書的書結(jié)點(diǎn)中,添加一個(gè)bookid屬性 @Testpublic void test7(){try {//1.得到Document對(duì)象Document document = Dom4jUtil.getDocument();//2.得到根結(jié)點(diǎn)Element root = document.getRootElement();//3找到第二本書的書結(jié)點(diǎn)Element secondBookEle = (Element)root.elements("書").get(1);//4.設(shè)置屬性secondBookEle.addAttribute("bookid", "isbsb-111");//取屬性值//String sbstr = secondBookEle.attributeValue("bookid");//System.out.println(sbstr);//4.寫回XML Dom4jUtil.writeDocument2Xml(document);} catch (Exception e) {e.printStackTrace();}} }

?

轉(zhuǎn)載于:https://www.cnblogs.com/xiarongjin/p/8310836.html

總結(jié)

以上是生活随笔為你收集整理的Dom4j操作XML的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。