domj4基本使用

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());
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值