关于dom4j

jar包下载:https://dom4j.github.io/
具体教程参考文章:https://www.cnblogs.com/sharpest/p/7877501.html
先编写一个xml如下

<?xml version="1.0" encoding="UTF-8"?>
<students>
     <student id="01">
           <name>哇唧唧哇</name>
           <age>8</age>
         </student>
     <student id="02">
           <name>嗷嗷嗷</name>
           <age>4</age>
         </student>
</students>

导入dom4j jar包
简单查询:
/*获得root : students
*/

    SAXReader reader = new SAXReader();
    //SAXReader :读取xml文件到Document树结构文件对象
    //创建dom4j的解析器
	Document document = reader.read(new File("student.xml"));
	//通过该解析器读取xml文件
    Element  root  = document.getRootElement();
    //将文件变为root根元素-------1
    for( Iterator iterator = root.elementIterator();iterator.hasNext();) {
      	Element element = (Element) iterator.next();
      //System.out.println(element.getName()); //获得节点: student
      	String id = element.attributeValue("id");//获得id
        String name=  element.elementText("name");//获得name标签(标签内容)
        //将文件变为root根元素-------2
        List<Element> elelist= root.elements();//两个student标签
    	for(Element element:elelist) {
		String id = element.attributeValue("id");
		System.out.println(id);
	}

添加节点:
/编写解析器

 SAXReader reader = new SAXReader();
	 Document document = reader.read(new File("student.xml"));
	 //获得root
	 Element root = document.getRootElement();
	 Element student =  root.addElement("student").addAttribute("id", "03");
	 student.addElement("name").addText("www");
	 student.addElement("age").addText("20");
	 //定义数据
	// XMLWriter writer = new XMLWriter(new FileWriter(new File("student.xml")));
	 //创建流
	 OutputFormat format = OutputFormat.createPrettyPrint();
	 format.setEncoding("UTF-8");
	 XMLWriter  writer = new XMLWriter(new FileWriter(new File("student.xml")),format);
	 writer.write(document);
	 //关闭流
	 writer.close();

删除:dom4j 提供方法可以快速定位到想要的删除的内容
利用xpath
导入:
jaxen-1.1-beta-6.jar
jaxme-api-0.3.jar
jsr173_1.0_api.jar
pull-parser-2.1.10.jar
relaxngDatatype-20030807.jar
xpp3-1.1.3.3.jar
xsdlib-20030807.jar

  public static void main(String[] args) throws DocumentException {
	   SAXReader reader = new SAXReader();
		 Document document = reader.read(new File("student.xml"));
		 //获得root
		 Element root = document.getRootElement();
		 Element student = (Element) document.selectSingleNode("//student[@id='03']");
		 student.getParent().remove(student);
		 try {
			show("student.xml",document);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
}

private static void show(String filiePath, Document document) throws IOException {
	 //创建流
	 OutputFormat format = OutputFormat.createPrettyPrint();
	 format.setEncoding("UTF-8");
	 XMLWriter  writer = new XMLWriter(new FileWriter(new File(filiePath)),format);
	 writer.write(document);
	 //关闭流
	 writer.close();
	
}

修改:查询到指定的元素,才能进行修改

 public static void main(String[] args) throws DocumentException, IOException {
	   SAXReader reader = new SAXReader();
		 Document document = reader.read(new File("student.xml"));
		 Element student = (Element) document.selectSingleNode("//student[@id='02']");
		 student.element("name").addAttribute("type", "dou");
		 student.element("name").setText("11");
		 show("student.xml", document);
		 try {
			show("student.xml",document);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
}

private static void show(String filiePath, Document document) throws IOException {
	 //创建流
	 OutputFormat format = OutputFormat.createPrettyPrint();
	 format.setEncoding("UTF-8");
	 XMLWriter  writer = new XMLWriter(new FileWriter(new File(filiePath)),format);
	 writer.write(document);
	 //关闭流
	 writer.close();
	
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值