domj4.jar包的基本使用
简介
DOM4J是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。DOM4J最大的特色是使用大量的接口。
分析XML文档结构
以下是一个xml文件
分析上图我们可以得出这个xml文档的结构图,如下:
由上图所示我们可以了解到XML只有一个根节点,根节点可以添加元素,元素中可以嵌套元素.
注意
XML文档有且只能有一个根节点
常用方法
获得文档实例
//------------------方式一----------------------
Document document = DocumentHelper.createDocument();
//------------------方式二----------------------
//文件路径
String path="D:/User.xml";
//创建SAXReader实例
SAXReader saxReader=new SAXReader();
//使用SAXReader实例读取xml文件获得他的文档对象
Document document = saxReader.read(path);
通过文档实例添加根节点
文档实例.addElement(String arg0);
Element tou = document.addElement("头");
获得根节点实例
文档实例.getRootElement()
Element root=document.getRootElement()
元素属性(增删改查)
给元素添加属性
元素实例.addAttribute(String arg0 , String arg1 )
tou.addAttribute("属性一", "我是属性一");
获得属性
元素实例.attribute(String arg0);
Attribute a1 = attribute.attribute("属性一");
修改元素属性
属性实例.setValue(String arg0);
a1.setValue("属性新值");
删除元素属性
元素实例.remove(Attribute arg0);
tou.remove("属性一");
文本
添加文本
元素实例.addText(String arg0);
tou.addText("20");
修改元素的文本
元素实例.setText(String arg0)
tou.setText("脑袋");
得到元素文本
元素实例.getText()/元素实例.getTextTrim()
tou.getText()//得到文本
tou.getTextTrim()//得到一个将多个空格转变为一个空格的文本
获得子元素
得到这个元素的迭代器
元素实例.elementIterator()
Iterator it=tou.elementIterator();
得到这个元素中的所有子元素的List集合
元素实例.elements();
List<Element> elements=root.elements();
得到这个元素中的指定子元素
元素实例.element(“学生2”);
Element e1 = root.element("元素一");
写入XML
设定格式化输出标准
//创建一个格式化输出对象
OutputFormat of=new OutputFormat();
//设置字符集
of.setEncoding("gbk");
//创建文件写入流对象
FileWriter writer=new FileWriter(path);
//创建xml写入对象流
XMLWriter xmlWriter=new XMLWriter(writer,of);
//将这个文档对象写入到xml中
xmlWriter.write(document);
xmlWriter.close();
writer.close();
注意
无论是创建 ,修改,还是删除后都要写出到文件中
写入XML案例一
String path="D:/User.xml"
//使用 DocumentHelper 类创建一个文档实例
//DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类
Document document = DocumentHelper.createDocument();
//使用文档实例添加根节点
Element tou = document.addElement("头");
//给根节点添加属性
tou.addAttribute("脑子", "36k");
//给根节点添加文本
tou.setText("脑袋");
//设定格式化输出标准
OutputFormat of=new OutputFormat();
//设置字符集
of.setEncoding("gbk");
//创建文件写入流对象
FileWriter writer=new FileWriter(path);
//创建xml写入对象流
XMLWriter xmlWriter=new XMLWriter(writer,of);
//将这个document写入到xml中
xmlWriter.write(document);
//关闭流对象
xmlWriter.close();
writer.close();
写入XML案例二
String path="D:/User.xml"
//获得SAXReader实例对象
SAXReader reader=new SAXReader();
//得到文档对象
Document document = reader.read(file);
//得到根节点实例
Element student = document.getRootElement();
//创建格式化输出流
OutputFormat of=OutputFormat.createPrettyPrint();
//设置字符集
of.setEncoding("UTF-8");
//创建文件写入流对象
FileWriter fw=new FileWriter(path);
//创建xml写入对象流
XMLWriter xmlWriter=new XMLWriter(fw,of);
//通过根节点添加元素
Element id = student.addElement("编号");
//更改编号元素文本信息
id.setText(every.getId());
//设置输出格式换行
of.setNewlines(true);
//将这个document写入到xml中
xmlWriter.write(document);
//关闭流对象
xmlWriter.close();
writer.close();
获得指定子元素的内容
String path="D:/User.xml";
File file=new File(path);
SAXReader reader=new SAXReader();
//得到文档对象
Document document = reader.read(file);
Element root = document.getRootElement();
//得到根元素的可迭代对象
Iterator<Element> it = root.elementIterator();
while (it.hasNext()) {
Element every = it.next();
if(every.getName().equals("元素一")){
System.out.println(element.getText());
}
}