您的位置:首页 > 编程语言 > Java开发

java 读写xml dom4j

2016-06-03 13:49 316 查看
java里经常会碰到解析xml的需求,除了官方的dom和sax解析,还有第三方提供的对xml的解析,比如dom4j,这里就写个简单的demo

1.解析xml

/**
* @Desc:遍历和取确定的标签值/属性
* @param xmlFilePath 读取的xml文件路径
*/
public void showXMLResult(String xmlFilePath){
Element root = getRootElement(xmlFilePath);
List<Element> childElements = root.elements(); // book标签
for (Element child : childElements) {
// 已知属性名情况下
System.out.println("id: " + child.attributeValue("id"));

String tid = child.element("title").attributeValue("tid");
System.out.println("tid:" + tid);
// 已知子元素名的情况下
System.out.println("title" + child.elementText("title"));
System.out.println("author" + child.elementText("author"));
// 这行是为了格式化美观而存在
System.out.println();
}
}

/**
* @Desc: 根据文件路径,获取根元素
* @param filePath 文件路径
* @return         xml根元素
*/
public Element getRootElement(String filePath){
SAXReader reader = new SAXReader();
File file = new File(filePath);
try {
return reader.read(file).getRootElement();
} catch (DocumentException e) {
e.printStackTrace();
}
return null;
}


读取的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="001" b="b2">
<title tid="001_01">Harry Potter</title>
<author>J K. Rowling</author>
</book>
<book id="002">
<title>Learning XML</title>
<author>Erik T. Ray</author>
</book>
</books>


2.生成xml

/**
* @Desc: 生成demo到指定路径
* @param targetPath 输出目录
*/
public void writeXML(String targetPath) {
Document doc = DocumentHelper.createDocument();
// 增加根节点
Element books = doc.addElement("books");
// 增加子元素
Element book1 = books.addElement("book");
Element title1 = book1.addElement("title");
Element author1 = book1.addElement("author");

Element book2 = books.addElement("book");
Element title2 = book2.addElement("title");
Element author2 = book2.addElement("author");

// 为子节点添加属性
book1.addAttribute("id", "001");
// 为元素添加内容
title1.setText("Harry Potter");
author1.setText("J K. Rowling");

book2.addAttribute("id", "002");
title2.setText("Learning XML");
author2.setText("Erik T. Ray");

// 实例化输出格式对象
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置输出编码
format.setEncoding("UTF-8");
// 创建需要写入的File对象
File file = new File(targetPath + File.separator + "books.xml");
// 生成XMLWriter对象,构造函数中的参数为需要输出的文件流和格式
XMLWriter writer;
try {
writer = new XMLWriter(new FileOutputStream(file), format);
// 开始写入,write方法中包含上面创建的Document对象
writer.write(doc);
} catch (Exception e) {
e.printStackTrace();
}
}


tips:

dom4j真的非常强大,解析和生成xml,只需要dom4j.jar这一个jar包!!!

附jar的下载,戳我
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: