xml的生成与读取

1,xml的生成与读取

package com.lee.dom4j;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
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 User {
 
 private String xmlDocName = "users.xml";
 
 //创建一个xml文件
 public void newXML(){
  Document doc = DocumentHelper.createDocument();
  //创建一个根元素
  Element users = doc.addElement("users");
  doc.setRootElement(users);
  users.addComment("the xml document use to login for users");
  
  //根元素users下面的子元素
  Element user = users.addElement("user");//新增users的一个子元素
  user.addAttribute("id", "1");//增加一个user的属性,并赋值
  Element username = user.addElement("username");
  username.setText("zhangsan");
  Element password = user.addElement("password");
  password.setText("123456789");
  
  Element user2 = users.addElement("user");
  user2.addAttribute("id","2");
  Element username2 = user2.addElement("username");
  username2.setText("lisi");
  Element password2 = user2.addElement("password");
  password2.setText("987654321");
  
  //通过 org.dom4j.io.OutputFormat 来设置XML文档输出格式
  OutputFormat format = OutputFormat.createPrettyPrint();
  format.setEncoding("gbk");
  format.setSuppressDeclaration(true);
  format.setIndent(true);//设置是否缩进
  format.setIndent("  ");//以空格的方式实现缩进
  format.setNewlines(true);//设置是否换行
  
  /**
   * 通过XMLWriter 创建xml文档
   */
  try {
   XMLWriter writer = new XMLWriter(new FileOutputStream(new File(xmlDocName)),format);
   writer.write(users);
   writer.close();
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 //读取xml文件
 public void readXML(){
  SAXReader saxReader = new SAXReader();
  //通过SAXReader读取真个文档
  try {
   Document doc = saxReader.read(new FileInputStream(new File(xmlDocName)));
   /**
    * 获取xml文档的各个元素及其值
    */
   Element users = doc.getRootElement();//取得xml文档的根元素
   
   System.out.println(" " + users.getName());
   /**
    * Iterator 集合得到根元素下的所有子元素,
    *可以指定多要得到的子元素的名称user
    */
   Iterator it = users.elementIterator("user");
   
   while(it.hasNext()){
    
    Element user = (Element)it.next();
    /**
     * 以List集合得到 user 下的所有子元素
     * 可以指定名称取得所要取的元素
     */
    List users_subElements = user.elements("username");
    
    for(int i=0;i<users_subElements.size();i++){
     
     Element ele = (Element)users_subElements.get(i);
     
     System.out.print(ele.getName() + " : " +ele.getText());
     
    }
    
    System.out.println();
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (DocumentException e) {
   e.printStackTrace();
  }
 }
 
}

2,快速操作

package com.lee.dom4j;

import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class SelectNodes {

 /**
  * 使用XPath快速查找
  */
 public static void main(String[] args){
     SAXReader reader = new SAXReader();
    
     try{
       Document  doc = reader.read(new File("sample.xml"));
      
       List projects=doc.selectNodes("//projectDescription/projects/project");
      
       Iterator it=projects.iterator();
      
       while(it.hasNext()){
         Element elm=(Element)it.next();      
         System.out.println(elm.getText());
       }
      
     }
     catch(Exception ex){
        ex.printStackTrace();
     }
   }

}

3,

package com.lee.dom4j;

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

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

public class Students {

 public static void main(String[] args) {

  try {
   XMLWriter writer = null;// 声明写xml对象
   SAXReader reader = new SAXReader();
   // 对生成的xml文件进行格式化
   OutputFormat format = OutputFormat.createPrettyPrint();
   format.setEncoding("gbk");

   File file = new File("student.xml");

   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("王五ooooo");
                         student.selectSingleNode("年龄").setText("25");

                         writer = new XMLWriter(new FileWriter("student.xml"), format);
                         writer.write(document);
                         writer.close();
                         bl = true;
                         break;
                     }
                 }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }

 }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值