java appendchild_java dom4j怎么实现append方法

展开全部

DOM4J生成和解析XML文档

DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大62616964757a686964616fe59b9ee7ad9431333337383230和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。

假设我们XML的内容和结构如下(demo.xml):

m

23

f

22

导入jar包:dom4j-1.6.1.jar

package cn.main.dom4j;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Iterator;

import org.dom4j.Attribute;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

/**

*

* dom4j生成与解析XML文档

*

* @author wanglp 2012-2-23

*/

public class Dom4jDemo {

/**

* 利用dom4j进行xml文档的写入操作

*/

public void createXml(File file) {

// XML 声明 <?xml version="1.0" encoding="UTF-8"?> 自动添加到 XML文档中

// 使用DocumentHelper类创建文档实例(生成 XML文档节点的 dom4j API工厂类)

Document document = DocumentHelper.createDocument();

// 使用addElement()方法创建根元素 employees(用于向 XML 文档中增加元素)

Element root = document.addElement("employees");

// 在根元素中使用 addComment()方法添加注释"An XML Note"

root.addComment("An XML Note");

// 在根元素中使用 addProcessingInstruction()方法增加一个处理指令

root.addProcessingInstruction("target", "text");

// 在根元素中使用 addElement()方法增加employee元素。

Element empElem = root.addElement("employee");

// 使用 addAttribute()方法向employee元素添加id和name属性

empElem.addAttribute("id", "0001");

empElem.addAttribute("name", "wanglp");

// 向employee元素中添加sex元素

Element sexElem = empElem.addElement("sex");

// 使用setText()方法设置sex元素的文本

sexElem.setText("m");

// 在employee元素中增加age元素 并设置该元素的文本。

Element ageElem = empElem.addElement("age");

ageElem.setText("25");

// 在根元素中使用 addElement()方法增加employee元素。

Element emp2Elem = root.addElement("employee");

// 使用 addAttribute()方法向employee元素添加id和name属性

emp2Elem.addAttribute("id", "0002");

emp2Elem.addAttribute("name", "fox");

// 向employee元素中添加sex元素

Element sex2Elem = emp2Elem.addElement("sex");

// 使用setText()方法设置sex元素的文本

sex2Elem.setText("f");

// 在employee元素中增加age元素 并设置该元素的文本。

Element age2Elem = emp2Elem.addElement("age");

age2Elem.setText("24");

// 可以使用 addDocType()方法添加文档类型说明。

// document.addDocType("employees", null, "file://E:/Dtds/dom4j.dtd");

// 这样就向 XML 文档中增加文档类型说明:

//

// 如果文档要使用文档类型定义(DTD)文档验证则必须有 Doctype。

try {

XMLWriter output = new XMLWriter(new FileWriter(file));

output.write(document);

output.close();

} catch (IOException e) {

System.out.println(e.getMessage());

}

}

/**

* 利用dom4j进行xml文档的读取操作

*/

public void parserXml(File file) {

Document document = null;

// 使用 SAXReader 解析 XML 文档 catalog.xml:

SAXReader saxReader = new SAXReader();

try {

document = saxReader.read(file);

} catch (DocumentException e) {

e.printStackTrace();

}

// 将字符串转为XML

// document = DocumentHelper.parseText(fileString);

// 获取根节点

Element root = document.getRootElement();

// 打印节点名称

System.out.println("");

// 获取根节点下的子节点遍历

Iterator> iter = root.elementIterator("employee");

// 遍历employee节点

while (iter.hasNext()) {

// 获取当前子节点

Element empEle = (Element) iter.next();

System.out.println("");

// 获取当前子节点的属性遍历

Iterator> attrList = empEle.attributeIterator();

while (attrList.hasNext()) {

Attribute attr = (Attribute) attrList.next();

System.out.println(attr.getName() + "=" + attr.getValue());

}

// 遍历employee节点下所有子节点

Iterator> eleIte = empEle.elementIterator();

while (eleIte.hasNext()) {

Element ele = (Element) eleIte.next();

System.out.println("" + ele.getTextTrim());

}

// 获取employee节点下的子节点sex值

// String sex = empEle.elementTextTrim("sex");

// System.out.println("sex:" + sex);

}

System.out.println("" + root.getName() + ">");

}

public static void main(String[] args) {

Dom4jDemo dom4j = new Dom4jDemo();

File file = new File("e:/dom4j.xml");

// dom4j.createXml(file);

dom4j.parserXml(file);

}

}

本回答由网友推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值