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

dom4j讀寫xml文件

系統 1743 0

首先我們給出一段示例程序:

import ?java.io.File;
import ?java.io.FileWriter;
import ?java.util.Iterator;

import ?org.dom4j.Document;
import ?org.dom4j.DocumentHelper;
import ?org.dom4j.Element;
import ?org.dom4j.io.OutputFormat;
import ?org.dom4j.io.SAXReader;
import ?org.dom4j.io.XMLWriter;

public ? class ?DOM4JTest? {
/** ? */
/** ? */
/** ? */

/**
?????*?DOM4J讀寫XML示例
?????*?
?????*?
@param ?args
?????*?
@throws ?Exception
?????
*/

????
public ? static ? void ?main(String[]?args)? {
????????
try ? {
????????????XMLWriter?writer?
= ? null ; // ?聲明寫XML的對象
????????????SAXReader?reader? = ? new ?SAXReader();

????????????OutputFormat?format?
= ?OutputFormat.createPrettyPrint();
????????????format.setEncoding(
" GBK " ); // ?設置XML文件的編碼格式

????????????String?filePath?
= ? " d:\\student.xml " ;
????????????File?file?
= ? new ?File(filePath);
????????????
if ?(file.exists())? {
????????????????Document?document?
= ?reader.read(file); // ?讀取XML文件
????????????????Element?root? = ?document.getRootElement(); // ?得到根節點
???????????????? boolean ?bl? = ? false ;
????????????????
for ?(Iterator?i? = ?root.elementIterator( " 學生 " );?i.hasNext();)? {
????????????????????Element?student?
= ?(Element)?i.next();
????????????????????
if ?(student.attributeValue( " sid " ).equals( " 001 " ))? {
????????????????????????
// ?修改學生sid=001的學生信息
????????????????????????student.selectSingleNode( " 姓名 " ).setText( " 王五 " );
????????????????????????student.selectSingleNode(
" 年齡 " ).setText( " 25 " );

????????????????????????writer?
= ? new ?XMLWriter( new ?FileWriter(filePath),?format);
????????????????????????writer.write(document);
????????????????????????writer.close();
????????????????????????bl?
= ? true ;
????????????????????????
break ;
????????????????????}

????????????????}

????????????????
if ?(bl)? {
????????????????????
// ?添加一個學生信息
????????????????????Element?student? = ?root.addElement( " 學生 " );
????????????????????student.addAttribute(
" sid " ,? " 100 " );
????????????????????Element?sid?
= ?student.addElement( " 編號 " );
????????????????????sid.setText(
" 100 " );
????????????????????Element?name?
= ?student.addElement( " 姓名 " );
????????????????????name.setText(
" 嘎嘎 " );
????????????????????Element?sex?
= ?student.addElement( " 性別 " );
????????????????????sex.setText(
" " );
????????????????????Element?age?
= ?student.addElement( " 年齡 " );
????????????????????age.setText(
" 21 " );

????????????????????writer?
= ? new ?XMLWriter( new ?FileWriter(filePath),?format);
????????????????????writer.write(document);
????????????????????writer.close();
????????????????}

????????????}
? else ? {
????????????????
// ?新建student.xml文件并新增內容
????????????????Document?_document? = ?DocumentHelper.createDocument();
????????????????Element?_root?
= ?_document.addElement( " 學生信息 " );
????????????????Element?_student?
= ?_root.addElement( " 學生 " );
????????????????_student.addAttribute(
" sid " ,? " 001 " );
????????????????Element?_id?
= ?_student.addElement( " 編號 " );
????????????????_id.setText(
" 001 " );
????????????????Element?_name?
= ?_student.addElement( " 姓名 " );
????????????????_name.setText(
" 灰機 " );
????????????????Element?_age?
= ?_student.addElement( " 年齡 " );
????????????????_age.setText(
" 18 " );

????????????????writer?
= ? new ?XMLWriter( new ?FileWriter(file),?format);
????????????????writer.write(_document);
????????????????writer.close();
????????????}

????????????System.out.println(
" 操作結束!? " );
????????}
? catch ?(Exception?e)? {
????????????e.printStackTrace();
????????}


????}

}


執行結果應該是這樣:

dom4j讀寫xml文件

循環解析節點:

private ? void ?getAllNodes(String?xml)? {
????????
try ? {
????????????Document?authtmp?
= ?DocumentHelper.parseText(xml);
????????????List
< Element > ?list? = ?authtmp.selectNodes( " //sms/node " );
????????????
for ?( int ?j? = ? 0 ;?j? < ?list.size();?j ++ )? {
????????????????Element?node?
= ?(Element)?list.get(j);
????????????????nodeByNodes(node);
????????????}

????????}
? catch ?(Exception?e)? {
????????????e.printStackTrace();
????????}

????}


????
private ? void ?nodeByNodes(Element?node)? {
????????
if ?(node.element( " node " )? != ? null )? {
????????????String?id?
= ?node.attributeValue( " id " );
????????????String?name?
= ?node.attributeValue( " name " );
????????????System.out.print(id?
+ ? " ------- " );
????????????System.out.println(name);
????????????
for ?(Iterator?i? = ?node.elementIterator( " node " );?i.hasNext();)? {
????????????????Element?newNode?
= ?(Element)?i.next();
????????????????nodeByNodes(newNode);
????????????}

????????}
? else ? {
????????????String?id?
= ?node.attributeValue( " id " );
????????????String?name?
= ?node.attributeValue( " name " );
????????????System.out.print(id?
+ ? " ------- " );
????????????System.out.println(name);
????????}

????}


其次DOM4J的解釋

一.Document對象相關

1.讀取XML文件,獲得document對象.

??????SAXReader?reader?= ? new?SAXReader();
??????Document???document?
= ?reader.read( new ?File( " input.xml " ));


2.解析XML形式的文本,得到document對象.

?????? String?text? = ? " <members></members> ";
??????Document?document?
= ?DocumentHelper.parseText(text);


3.主動創建document對象.

??????Document?document? =?DocumentHelper.createDocument();
??????Element?root?
= ?document.addElement( " members " ); // ?創建根節點


二.節點相關

1.獲取文檔的根節點.

????? Element?rootElm? = ?document.getRootElement();


2.取得某節點的單個子節點.

????? Element?memberElm = root.element( " member " ); // ?"member"是節點名


3.取得節點的文字

????? String text = memberElm.getText();

也可以用:

????? String text = root.elementText( " name " );

這個是取得根節點下的name字節點的文字.

4.取得某節點下名為"member"的所有字節點并進行遍歷.

List?nodes? = ?rootElm.elements( " member ");

for ?(Iterator?it? = ?nodes.iterator();?it.hasNext();)? {
????Element?elm?
=?(Element)?it.next();
???
// ?do?something
}


5.對某節點下的所有子節點進行遍歷.

? for (Iterator?it = root.elementIterator();it.hasNext();) {
?????????????????Element?element?
= ?(Element)?it.next();
????????????????
// ?do?something
?????????????}


6.在某節點下添加子節點.

Element ageElm = newMemberElm.addElement( " age " );


7.設置節點文字.

ageElm.setText( " 29 " );


8.刪除某節點.

parentElm.remove(childElm); // childElm是待刪除的節點,parentElm是其父節點


9.添加一個CDATA節點.

???????? Element contentElm = infoElm.addElement( " content " );
???????? contentElm.addCDATA(diary.getContent());

????????????contentElm.getText(); // 特別說明:獲取節點的CDATA值與獲取節點的值是一個方法
????????????contentElm.clearContent(); //清除節點中的內容,CDATA亦可



三.屬性相關.
1.取得某節點下的某屬性

???????????? Element root = document.getRootElement();????
???????????? Attribute attribute
= root.attribute( " size " ); // 屬性名name


2.取得屬性的文字

???????????? String text = attribute.getText();

也可以用:

String text2 = root.element( " name " ).attributeValue( " firstname " );

這個是取得根節點下name字節點的屬性firstname的值.

3.遍歷某節點的所有屬性

??Element?root = document.getRootElement();????
????????????
for (Iterator?it = root.attributeIterator();it.hasNext();) {
?????????????????Attribute?attribute?
= ?(Attribute)?it.next();
?????????????????String?text
= attribute.getText();
?????????????????System.out.println(text);
?????????????}


4.設置某節點的屬性和文字.

newMemberElm.addAttribute( " name " , " sitinspring " );


5.設置屬性的文字

???????????? Attribute attribute = root.attribute( " name " );
???????????? attribute.setText(
" sitinspring " );


6.刪除某屬性

???????????? Attribute attribute = root.attribute( " size " ); // 屬性名name
???????????? root.remove(attribute);


四.將文檔寫入XML文件.
1.文檔中全為英文,不設置編碼,直接寫入的形式.

XMLWriter writer = new XMLWriter( new FileWriter( " output.xml " ));
writer.write(document);
writer.close();


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

???????????? OutputFormat format = OutputFormat.createPrettyPrint();
???????????? format.setEncoding(
" GBK " );???? // 指定XML編碼????????
???????????? XMLWriter writer = new XMLWriter( new FileWriter( " output.xml " ),format);
????????????
???????????? writer.write(document);
???????????? writer.close();


五.字符串與XML的轉換
1.將字符串轉化為XML

String text = " <members> <member>sitinspring</member> </members> " ;
Document document
= DocumentHelper.parseText(text);


2.將文檔或節點的XML轉化為字符串.

???????????? SAXReader reader = new SAXReader();
???????????? Document?? document
= reader.read( new File( " input.xml " ));????????????
???????????? Element root
= document.getRootElement();????????????????
???????????? String docXmlText
= document.asXML();
???????????? String rootXmlText
= root.asXML();
???????????? Element memberElm
= root.element( " member " );
???????????? String memberXmlText
= memberElm.asXML();

dom4j讀寫xml文件


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一区二区高清 | 国产精品免费观看 | 亚洲美女黄色 | 国产精品久久久久免费视频 | 亚洲欧美综合日韩字幕v在线 | 波多野结衣办公室33分jian情 | 欧美videosex性欧美成人 | 成人国内精品久久久久影院 | 亚洲高清中文字幕一区二区三区 | 亚洲一区电影 | 国偷自产av一区二区三区 | 国产精品成人在线播放 | 亚洲欧美视频在线播放 | 亚洲第一人伊人色综合 | 天天摸天天碰天天碰 | 国产视频在线免费观看 | 精品一区二区三区三区 | 欧美午夜视频一区二区三区 | 麻豆国产精品 | 精品久久久久久久久久 | 久久69精品久久久久久久电影好 | 亚洲毛片无码专区亚洲A片 日本高清www午色夜黄 | 欧美一区高清 | 日韩在线欧美 | 91精品一区二区三区久久久久久 | 久久精品国产免费看久久精品 | 国产精品久久久久久久一区探花 | 国产精品国产午夜免费福利看 | 在线播放一区二区三区 | 国产精品美女久久久久久 | 成人在线中文字幕 | 天堂资源 | 久久精品视频大全 | 天天干天天操 | 我要看真正的免费毛片 | 噜噜噜天天躁狠狠躁夜夜精品 | 98香蕉草草视频在线精品看 | 日韩福利视频一区 | 精品小视频 | 欧美一区二区三区在线可观看 | 国产欧美一区二区成人影院 |