关于java语言中xml的生成与解析日常处理中有4中处理方式,分别是dom,sax,jdom,dom4j.
这里若是不需要考虑他们的今生前世,就直接看下面的使用方法吧。
简单说明下jdom与dom4这两个java包。
jdom: JDOM的目的是成为 Java 特定文档模型,它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一个 Java 特定模型,JDOM 一直得到大力推广和促进。正在考虑通过“Java 规范请求 JSR-102”将它最终用作“Java 标准扩展”。
dom4:dom4 代表了完全独立的开发结果,但最初,它是 JDOM 的一种智能分支。它合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。
ps:DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML.
建议在日常的开发中选择dom4j包。
下面分别说下dom4j和jdom的使用:以下是一个createxml.java源码。
项目引用:
dom4j-1.6.1.jar包。
package org.cpop.dom4j.demo;
import java.io.FileWriter;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class createxml {
/**
* @param args
*/
public static void main(String[] args) {
Document document=createdocument();
writeDocument(document, "d:\\dom4j.xml");
}
private static Document createdocument()
{
Document document=DocumentHelper.createDocument();
//生成一个接点
Element root = document.addElement("root");
//生成root的一个接点
Element category = root.addElement("category");
category.addAttribute("type","1");
//生产category的一个接点
Element id = category.addElement("id");
//生成id里面的参数值
id.addAttribute("name", "id");
//生成id里面的值
id.addText("1");
return document;
}
/**
* 写入xml文件地址
* @param document 所属要写入的内容
* @param outFile 文件存放的地址
*/
public static void writeDocument(Document document, String outFile){
try{
//读取文件
FileWriter fileWriter = new FileWriter(outFile);
//设置文件编码
OutputFormat xmlFormat = new OutputFormat();
xmlFormat.setEncoding("utf-8");
xmlFormat.setIndentSize(40);
//创建写文件方法
XMLWriter xmlWriter = new XMLWriter(fileWriter,xmlFormat);
//写入文件
xmlWriter.write(document);
//关闭
xmlWriter.close();
}catch(IOException e){
System.out.println("文件没有找到");
e.printStackTrace();
}
}
}
最后生成的xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<root>
<category type="1">
<id name="id">1</id>
</category>
</root>
怎么样dom4j的用法很简单吧!
<完>
下面是使用dom4j来解析xml的方法。
以下是一个resolvexml.java源码。
项目引用:
dom4j-1.6.1.jar包。
package org.cpop.dom4j.demo;
import java.io.BufferedReader;
import java.io.FileReader;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class resolvexml {
/**
* @param args
*/
public static void main(String[] args) {
String xml=readxml();
try {
resolvexmls(xml);
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static void resolvexmls(String xml) throws DocumentException
{
Document document=DocumentHelper.parseText(xml);
Element rootelement=document.getRootElement();
Element categoryelement=rootelement.element("category");
System.out.println("category的type属性值:"+categoryelement.attributeValue("type"));
Element idelement=categoryelement.element("id");
System.out.println("id的值为:"+idelement.getText());
}
//读取文件。
public static String readxml()
{
String path="d:\\dom4j.xml";
try {
FileReader fr=new FileReader(path);
BufferedReader in=new BufferedReader(fr);
String str=new String();
StringBuffer sb=new StringBuffer();
while((str=in.readLine())!=null)
{
sb.append(str);
}
return sb.toString();
} catch (Exception e) {
return "";
}
}
}
那么打印出来的结果如下:
引用
category的type属性值:1
id的值为:1
ok,至此dom4j的基本使用差不多完了,更多的复杂生成与解析,看api才是正道。
<完>