国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

dom4j操作xml文件

2019-11-06 09:33:42
字體:
來源:轉載
供稿:網友

在pom 中引入:

<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>

(一)新增一個xml文件 本地沒有xml文件,創建一個新的xml文件:

PRivate static final String ELEMENT_ROOT="account-persist"; private static final String ELEMENT_ACCOUNTS="accounts"; private static final String ELEMENT_ACCOUNT="account"; private static final String ELEMENT_ACCOUNT_ID="id"; private static final String ELEMENT_ACCOUNT_NAME="name"; private static final String ELEMENT_ACCOUNT_EMAIL="email"; private static final String ELEMENT_ACCOUNT_PASSWord="password"; private static final String ELEMENT_ACCOUNT_ACTIVATED=""; private String file="F://learnTest//mvnbook//persist-data.xml"; private SAXReader reader=new SAXReader(); private void readDocument(){ File dateFile=new File(file); if(!dateFile.exists()){ dateFile.getParentFile().mkdirs(); //創建xml文件,元素是嵌套關系 Document doc= DocumentFactory.getInstance().createDocument(); Element rootFirstEle=doc.addElement(ELEMENT_ROOT); Element secEle=rootFirstEle.addElement(ELEMENT_ACCOUNTS); Element thEle=secEle.addElement(ELEMENT_ACCOUNT); Element sub_Ele_1=thEle.addElement(ELEMENT_ACCOUNT_ID); sub_Ele_1.addAttribute("color","red"); sub_Ele_1.setText("1"); Element sub_Ele_2=thEle.addElement(ELEMENT_ACCOUNT_NAME); sub_Ele_2.setText("test"); Element sub_Ele_3=thEle.addElement(ELEMENT_ACCOUNT_EMAIL); sub_Ele_3.setText("test@163.com"); Element sub_Ele_4=thEle.addElement(ELEMENT_ACCOUNT_PASSWORD); sub_Ele_4.setText("123456"); writeDocument(doc); }

創建一個文件輸出流,將xml寫入到指定的文件中:

private void writeDocument(Document doc){ Writer out=null; try{ out=new OutputStreamWriter(new FileOutputStream(file),"utf-8"); XMLWriter writer=new XMLWriter(out, OutputFormat.createPrettyPrint()); writer.write(doc); }catch (Exception e){ e.printStackTrace(); }finally { try{ if(out!=null){ out.close(); } }catch (Exception e){ e.printStackTrace(); } } }

添加的xml文件的結果形式是:

<?xml version="1.0" encoding="UTF-8"?><account-persist> <accounts> <account> <id color="red">1</id> <name>test</name> <email>test@163.com</email> <password>123456</password> </account> </accounts></account-persist>

(二)讀取xml文件里的內容 方法一:

//讀取xml內容 //這種方式需要熟悉xml文件的結構 public void readDoc(){ SAXReader reader=new SAXReader(); try{ Document doc=reader.read(new File(file)); //獲取根節點account-persist的子元素accounts Element rootEle=doc.getRootElement().element(ELEMENT_ACCOUNTS); //再獲取子元素accounts下的子元素account Element accountEle=rootEle.element(ELEMENT_ACCOUNT); //找出該節點下的所有元素 List<Element> elements=accountEle.elements(); //遍歷所有元素 for(Element element:elements){ System.out.println("節點名稱:"+element.getName()+" "+"節點的值:"+element.getText()); } }catch(Exception e){ e.printStackTrace(); } }

運行的結果:

節點名稱:id 節點的值:1節點名稱:name 節點的值:test節點名稱:email 節點的值:test@163.com節點名稱:password 節點的值:123456

(二)迭代和遞歸遍歷xml內容

//在不知道xml文件結構的情況下,使用迭代和遞歸可以遍歷出所有的元素和值 public void iterElement(){ SAXReader reader=new SAXReader(); try{ Document doc=reader.read(new File(file)); Element ele=doc.getRootElement(); //調用遞歸方法 allNodes(ele); }catch(Exception e){ e.printStackTrace(); } } public void allNodes(Element ele){ //獲取節點的屬性 List<Attribute> att=ele.attributes(); //迭代當前節點下的所有子元素 Iterator<Element> iteEle=ele.elementIterator(); if(iteEle.hasNext()){ Element element=iteEle.next(); //找出所有子節點 List<Element> elements=element.elements(); for(Element subEle:elements){ System.out.println("節點名字:"+subEle.getName()+" "+"節點值:"+subEle.getText()); allNodes(element); } } }

運行的結果:

節點名字:account 節點值:節點名字:id 節點值:1節點名字:name 節點值:test節點名字:email 節點值:test@163.com節點名字:password 節點值:123456

(三)修改元素的值

List<Element> elements=element.elements(); for(Element subEle:elements){ System.out.println("節點名字:"+subEle.getName()+" "+"節點值:"+subEle.getText()); //修改元素的值 if (subEle.getName().equals(ELEMENT_ACCOUNT_NAME)) { System.out.println("修改前name的值"+subEle.getName()+":"+subEle.getText()); subEle.setText("newName"); System.out.println("修改后nam的值"+subEle.getName()+":"+subEle.getText()); } allNodes(element); }

修改后的結果:

修改前name的值name:test修改后nam的值name:newName

修改后記得寫會到文件中。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 温州市| 攀枝花市| 阿鲁科尔沁旗| 乐东| 文成县| 柯坪县| 江华| 龙海市| 麻城市| 华安县| 祥云县| 昌邑市| 台湾省| 诸城市| 海晏县| 洛南县| 嘉善县| 浠水县| 辽宁省| 左贡县| 孟连| 茶陵县| 穆棱市| 陆河县| 库尔勒市| 芦山县| 绿春县| 台中县| 鄂伦春自治旗| 马鞍山市| 宝兴县| 仁寿县| 盱眙县| 新民市| 凤庆县| 南靖县| 台山市| 洪洞县| 托克托县| 遂昌县| 赣榆县|