您的位置:首页 > 其它

DOM4J解析XML

2015-05-29 20:31 387 查看
DOM4J是DOM4J出品的一个开源XML解析包。它可以读、写、导航、创建和修改XML文档。DOM4J应用于
Java 平台,采用了 Java
集合框架,并完全支持 DOM,SAX
和 JAXP。

使用Dom4j开发,需下载dom4j相应的jar文件。Dom4j的下载网址:http://sourceforge.net/projects/dom4j/files/dom4j/。我选择下载的是dom4j-1.6.1.zip,对其进行解压。在这里可以看到有docs帮助的文件夹,也有我们需要dom4j-1.6.1.jar文件。我们只需要把dom4j-1.6.1.jar文件构建到我们开发的项目中就可以使用dom4j开发了。

下面我们建立web程序,项目名称为得dom4jTest。这里需要将dom4j-1.6.1.jar拷贝到WEB-INF/lib中。下面是我对一些常用方法的整理:

(1)dom4j创建XML文件

<span style="font-size:12px;">	/**
* dom4j创建xml文件
*/
public void createXmlTest(){
//创建文档的根节点
Document document = DocumentHelper.createDocument();
//创建文档的根元素结点
Element root = document.addElement("person");
document.setRootElement(root);
//给根节点添加属性
root.addAttribute("name", "people").addAttribute("id", "highLevel");

//给根节点添加孩子结点
Element elem1=root.addElement("expression");
elem1.addElement("name").addAttribute("nameNo", "1").addText("华子");
elem1.addElement("sex").addText("女");

Element elem2 =root.addElement("expression");
elem2.addElement("name").addAttribute("nameNo", "2").addText("洋洋");
elem2.addElement("sex").addText("男");

//把生成的xml文档放在硬盘上  true代表换行
OutputFormat format = new OutputFormat(" ",true);
//设置编码格式
format.setEncoding("UTF-8");
try {
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("person.xml"),format);
xmlWriter.write(document);
xmlWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}</span>

(2)dom4j读取xml文件

/**
* dom4j读取xml文件
*/
public void readXmlTest(){

File file = new File("src/dom4j/person.xml");  //注意文件的路径,如果报错对象为空,可能就是没有找到文件位置
SAXReader reader = new SAXReader();
Document doc;
try {
//读取xml文件
doc = reader.read(file);

//获得根节点元素
Element root =doc.getRootElement();

//遍历根节点下的所有子节点元素
for (Iterator i =root.elementIterator();i.hasNext();) {
Element element =(Element)i.next();
//输出每个子节点下的所有属性
for (Iterator attr = element.attributes().iterator(); attr.hasNext();) {
Attribute attrElement = (Attribute) attr.next();
System.out.println("显示: "+attrElement.getName()+":" + attrElement.getValue());
}
}

} catch (DocumentException e) {
e.printStackTrace();
}
}

(3)使用dom4j实现对字符串与xml的互相转化

/**
* 利用dom4j将字符串转化为xml
*/
public void stringToXmlTest(){

String text = "<person><name>huazi</name><sex>girl</sex></person>";

try {
//将字符串解析为xml
Document doc = DocumentHelper.parseText(text);
// 获取根节点
Element rootElt = doc.getRootElement();
// 拿到根节点的名称
System.out.println("根节点:" + rootElt.getName());

} catch (DocumentException e1) {
e1.printStackTrace();
}
}

/**
* 利用dom4j将xml转化为字符串
*/
public void xmlToStringTest(){

File file = new File("src/dom4j/person.xml");
SAXReader reader = new SAXReader();

try {

//读取xml文件
Document doc = reader.read(file);
//获取根节点元素
Element root =doc.getRootElement();

//将XML文件转化为字符串
String xmlToString = doc.asXML();
System.out.println(xmlToString);

//根元素标签转换的内容
String rootXMLText =root.asXML();
System.out.println(rootXMLText);

//获取子节点元素标签内的内容
Element e =root.element("子标签元素");
System.out.println(e.asXML());

} catch (DocumentException e1) {
e1.printStackTrace();
}
}

(4)结点对象的一些属性和方法的整理

//取得某节点下的某属性
Element root=document.getRootElement();

//属性名name
Attribute attribute=root.attribute("id");

//取得属性的文字
String text=attribute.getText();

//删除某属性
Attribute attribute=root.attribute("size");
root.remove(attribute);

//遍历某节点的所有属性
Element root=document.getRootElement();
for(Iterator it=root.attributeIterator();it.hasNext();){
Attribute attribute = (Attribute) it.next();
String text=attribute.getText();
System.out.println(text);
}

//设置某节点的属性和文字.
newMemberElm.addAttribute("name", "huazi");

//设置属性的文字
Attribute attribute=root.attribute("name");
attribute.setText("huazi");


更多相关方法请参照dom4j提供的文档,下面的地址博客链接整理的也很全面,大家可以参考:/article/4988146.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: