java中的DOM4J解析XML

1.DOM4J是目前使用非常广泛的一种解析XML技术,与DOM相比,他的使用更加方便,操作简单!

2.DOM4J是一个易用的,开源的库,可以用于XML、XPath、XSLT等。

3.DOM4J的主要接口都在org.dom4j包里定义。

  • Attribute:定义XML的属性

  • Branch:为能够包含子节点的节点,如XML元素(Element)和文档(Docuements)定义了一个公共的行为
  • CDATA:定义了XML CDATA区域
  • Comment:定义了文档注释的行为

  • Document:定义了XML文档

  • Text:定义了文本节点

4.使用DOM4J读写xml文档,需要下载dom4j.jar包,官网就可以下载 https://dom4j.github.io/ .

5.具体使用dom4j来对xml文档进行增,删,改,查

使用dom4j进行数据的查询:


public class Test01 {
	public static void main(String[] args) throws Exception {
		SAXReader saxReader =new SAXReader();
		Document document= saxReader.read("src/chap06/info.xml");
		Element  ele=document.getRootElement();	//获取根节点
		
		//查询
		Iterator<Element> it=ele.elementIterator();//获得子节点
		while(it.hasNext()) {
			Element brandEle=it.next();
			String brandattr=brandEle.attributeValue("name");
			Iterator<Element> typeIt=brandEle.elementIterator();//子节点里面的元素节点
			while(typeIt.hasNext()) {
				Element typeEle=typeIt.next();
				String typeAttr=typeEle.attributeValue("name");
				System.out.println("品牌:"+brandattr+"型号:"+typeAttr);
			}
			
		}
	}
}

数据的添加和保存:

public class Test02 {
	public static void main(String[] args) throws Exception {
		SAXReader saxReader=new SAXReader();
		Document doc =saxReader.read("src/chap06/info.xml");
		Element ele=doc.getRootElement();
		
		//添加
		Element brandEle=ele.addElement("Brand");
		brandEle.addAttribute("name","小米");
		brandEle.setText("为发烧而生!");
		
		//保存文档
		OutputFormat format =OutputFormat.createPrettyPrint();//设置格式,缩进
		format.setEncoding("utf-8");  //指定编码格式
//		OutputFormat format =new OutputFormat();
		XMLWriter xmlWriter=new XMLWriter(new FileWriter("src/chap06/info.xml"), format);
		xmlWriter.write(doc);		 //将数据写入当xml文档中
		xmlWriter.close();			//关闭流
	}
}

数据的修改和保存

public class Test03 {
	public static void main(String[] args) throws Exception {
		SAXReader saxReader=new SAXReader();
		Document doc =saxReader.read("src/chap06/info.xml");
		Element ele=doc.getRootElement();
		
		//修改
		Iterator<Element> it=ele.elementIterator();
		while(it.hasNext()) {
			Element brandEle=it.next();
			Attribute attr=brandEle.attribute("name");
			if(attr.getValue().equals("三星")) {
				attr.setValue("sanxing");
			}
		}
		
		//保存文档
		OutputFormat format =OutputFormat.createPrettyPrint();//设置格式,缩进
		format.setEncoding("utf-8");  //指定编码格式
		XMLWriter xmlWriter=new XMLWriter(new FileWriter("src/chap06/info.xml"), format);
		xmlWriter.write(doc);		 //将数据写入当xml文档中
		xmlWriter.close();			//关闭流
		
		
	}
}

数据的删除和保存

public class Test04 {
	public static void main(String[] args) throws Exception {
		SAXReader saxReader=new SAXReader();
		Document doc =saxReader.read("src/chap06/info.xml");
		Element ele=doc.getRootElement();
		
		//删除
		Iterator<Element> it=ele.elementIterator();
		while(it.hasNext()) {
			Element brandEle=it.next();
			String brandAttr=brandEle.attributeValue("name");
			if(brandAttr.equals("三星")) {
				ele.remove(brandEle);
			}
		}
		
		//保存文档
		OutputFormat format =OutputFormat.createPrettyPrint();//设置格式,缩进
		format.setEncoding("utf-8");  //指定编码格式
		XMLWriter xmlWriter=new XMLWriter(new FileWriter("src/chap06/info.xml"), format);
		xmlWriter.write(doc);		 //将数据写入当xml文档中
		xmlWriter.close();			//关闭流
	}
}

猜你喜欢

转载自blog.csdn.net/JAVA52Lin/article/details/83752654