第一步:引用jar包

dom4j-1.6.1.jar

jaxen-1.1-beta-6.jar(支持XPath必须的,否则会报错java.lang.NoClassDefFoundError: org/jaxen/JaxenException,此jar包可以从dom4j的lib文件夹中获得)

第二步:XPath基本语法

http://www.w3school.com.cn/xpath/index.asp

第三步:实例

users.xml

<? xml version="1.0" encoding="UTF-8" ?>
- < Users >
- < User id =" 0 " >
  < Name > youchuancong </ Name >
  < Age > 23 </ Age >
  </ User >

- < User id =" 1 " >
  < Name > cindy </ Name >
  < Age > 23 </ Age >
  </ User >

  </ Users >

XMLTools.java
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
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.SAXReader;
import org.dom4j.io.XMLWriter;

public class XMLTools {
public void creat(String filename){//创建xml文件
 Document document = DocumentHelper.createDocument();
    Element usersElement = document.addElement("Users");
  
    Element userElement =  usersElement.addElement("User");
    userElement.addAttribute("id", "0");
   
    Element nameElement=userElement.addElement("Name");
    nameElement.setText("youchuancong");
   
    Element  ageElement=userElement.addElement("Age");
    ageElement.setText("23");
   
    Element userElement1 =  usersElement.addElement("User");
    userElement1.addAttribute("id", "1");
   
    Element nameElement1=userElement1.addElement("Name");
    nameElement1.setText("cindy");
   
    Element  ageElement1=userElement1.addElement("Age");
    ageElement1.setText("23");
   
   try{
   XMLWriter output = new XMLWriter(
           new FileWriter( new File(filename) ));
       output.write( document );
       output.close();
       }
    catch(IOException e){System.out.println(e.getMessage());}
}

public void read(String filename,String id) throws Exception{//根据id读出学生姓名
 SAXReader saxReader = new SAXReader();
    Document document = saxReader.read(new File(filename));
    Element e = (Element)document.selectSingleNode("/Users/User[@id='"+id+"']");
    Element name = e.element("Name");
    System.out.println("Name:"+name.getText());
 
}
public void readName(String filename) throws Exception{//读出所有学生的学生姓名
 SAXReader saxReader = new SAXReader();
    Document document = saxReader.read(new File(filename));
    List users = document.selectNodes("//Name");
    Iterator it = users.iterator();
    while(it.hasNext()){
     Element e = (Element)it.next();
     System.out.println("Name:"+e.getText());
    }
   
   
 
}
public void addUser(String filename,String id,String name,String age) throws Exception{
 SAXReader saxReader = new SAXReader();//添加信息
    Document document = saxReader.read(new File(filename));
    Element e = (Element)document.selectSingleNode("/Users");
  // Element e =  document.getRootElement();
   Element user = e.addElement("User");
   user.setAttributeValue("id", id);
   user.addElement("Name").setText(name);
   user.addElement("Age").setText(age);
  
     XMLWriter output = new XMLWriter(
             new FileWriter( new File(filename) ));
         output.write( document );
         output.close();
}
public void readUser(String filename) throws Exception{//读出所有学生的基本信息
 SAXReader saxReader = new SAXReader();
    Document document = saxReader.read(new File(filename));
    List l = document.selectNodes("/Users/User");
    Iterator it = l.iterator();
    while(it.hasNext()){
     Element e = (Element)it.next();
     System.out.println("id:"+e.attributeValue("id"));
     Element name = e.element("Name");
     System.out.println("name:"+name.getText());
     Element age = e.element("Age");
     System.out.println("age:"+age.getText());
     System.out.println("#############################");
    }
   
}

public void delete(String filename,String id) throws Exception{//删除指定id的学生
 SAXReader saxReader = new SAXReader();
    Document document = saxReader.read(new File(filename));
    Element e = (Element)document.selectSingleNode("/Users/User[@id='"+id+"']");
    if(e!=null){
     Element parent = e.getParent();
     parent.remove(e);
    
      XMLWriter output = new XMLWriter(
               new FileWriter( new File(filename) ));
          output.write( document );
          output.close();
    }
}

public void readAll(String filename) throws Exception{//选取所有节点
 SAXReader saxReader = new SAXReader();
    Document document = saxReader.read(new File(filename));
    List users = document.selectNodes("//*");
    Iterator it = users.iterator();
    while(it.hasNext()){
     Element e = (Element)it.next();
     System.out.println("ElementName:"+e.getName()+"||value:"+e.getText());
    }
   
   
 
}
public void modify(String filename,String id,String name) throws Exception{//修改指定学号的学生姓名
 SAXReader saxReader = new SAXReader();
    Document document = saxReader.read(new File(filename));
    Element e = (Element)document.selectSingleNode("/Users/User[@id='"+id+"']");
    Element n = e.element("Name");
    n.setText(name);
  
     XMLWriter output = new XMLWriter(
             new FileWriter( new File(filename) ));
         output.write( document );
         output.close();
       
}
}

XMLTest.java
public class XMLTest {
 public static void main(String[] args) {
  XMLTools xml = new XMLTools();
  //xml.creat("users.xml");
  try {
   //xml.read("users.xml", "0");
   //xml.addUser("users.xml", "4", "no", "100");
   //xml.readUser("users.xml");
   //xml.readName("users.xml");
   xml.readAll("users.xml");
   //xml.modify("users.xml", "0", "helloworld");
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

}

}

Dom4J+XPath相关推荐

  1. XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML

    XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...

  2. dom4j 解析xml文件(涉及知识点:dom4j,XPath,递归)

    涉及知识点 :dom4j, XPath, 递归 知识点: 节点是比元素更大一层的概念, 元素节点仅仅是节点中的一种. 元素,属性,名字空间,注释,文本内容,处理指令,还有整个文档(即看成根节点),这7 ...

  3. Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

    http://blog.csdn.net/smcwwh/article/details/7183869 关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath ...

  4. 第三天【DOM4J Xpath】

    一.DOM4J解析XML文件 CURD操作 SAXReader saxReader = new SAXReader(); Document document  = saxReader.read(new ...

  5. xml+dom4j+xpath学生管理系统

    <?xml version="1.0" encoding="UTF-8"?><student> <stu> <name ...

  6. 通讯录系统(控制台+dom4j+xPath+xml)

    设计一个通讯录程序 联系人: 编号  姓名  性别  年龄  电话  QQ 邮箱 功能要求: 添加联系人 修改联系人 删除联系人 查询所有联系人     要求:  1)交互使用console(控制台) ...

  7. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  8. dom4j xml解析 写框架必备技能(一)

    为了尽可能的阅读官网文档 百度dom4j ,说是在sourceForge 可以找到.特意访问https://sourceforge.net/projects/dom4j/ 网址进行查看 发现该项目已经 ...

  9. Java 使用 Dom4j 解析 XML 指南

    Java 使用 Dom4j 解析 XML 指南 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用 ...

最新文章

  1. Mysql,再见吧!select * !
  2. pandas将dataframe中的年、月、日数据列合并成完整日期字符串、并使用to_datetime将字符串格式转化为日期格式
  3. python随机生成字符串_python生成随机数、随机字符串
  4. iis php5.3 mysql_Win2008 R2配置IIS7.5+PHP Manager+PHP5.3+Mysql5.5+Wincache
  5. put the eye care sticker on the neck is relief
  6. spark基准测试-BigDataBenchs
  7. 这 5 条 IntelliJ IDEA 调试技巧太强了!
  8. 【OpenCV】SIFT原理与源码分析
  9. python中linspace函数_numpy.linspace函数具体使用详解
  10. ubuntu升级11.10登录桌面
  11. 判断闰年的c语言程序_身为程序员还记得C语言经典算法(附带答案)吗?
  12. 计算机组成原理 第二版 课后答案 (唐朔飞) 1~8章
  13. kubectl源码分析之config get-contexts
  14. 软件体系结构复习指南
  15. 公众号要如何排版?这几个必备公众号排版技巧千万不要错过哦
  16. matlab 秩和检验,多个独立样本比较的秩和检验(Kruskal-Wallis H)
  17. SQLite在指定列后面插入字段_如何用SQL语句添加和修改字段?
  18. JDK1.8和JDK1.7的HashMap源码分析以及线程不安全问题
  19. 卸载 make install 编译安装的软件
  20. 快来看啊,2023成都Java培训机构排行榜出来啦!

热门文章

  1. 公安局计算机岗位应知应会综合基础知识,事业单位考试计算机综合知识基础知识真题...
  2. Android学习---zygote(上)
  3. 盘点linux现状未来发展,盘点Linux现状及未来发展
  4. 如何制作动态PPT,像播放电影一样,同时怎么插入音乐
  5. 触动触摸脚本开发高级教程
  6. 解决Mac上MAMP Pro 80端口被占用
  7. 不同波特率传输时间计算
  8. tif文件转为shp文件_ArcGIS栅格数据与矢量数据的转换
  9. 从0开始建设saas - 系统对接中的问题整理
  10. A代表数字1,B代表数字2,以此类推Z代表26