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(); //关闭流
}
}