只需导入dom4j.jar即可
Dom4j解析XML
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Dom4jReardXML {
public static void main(String args[]) {
testParseXMLData("D:/MyWorkspace/mytest/person.xml");
}
/**
* @param xmlFilePath xml文件路径
* @return Document对象
*/
public static Document parse2Document(String xmlFilePath){
SAXReader reader = new SAXReader();
Document document = null;
File f = null;
try {
f = new File(xmlFilePath);
InputStream in = new FileInputStream(f);
document = reader.read(in);
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println("读取文件发生异常,请检查CLASSPATH和文件名是否存在!");
e.printStackTrace();
}
return document;
}
public static void testParseXMLData(String xmlFileName) {
Document document = null;
document = parse2Document(xmlFileName);
//获取文档的根元素
Element root = document.getRootElement();
StringBuffer sb = new StringBuffer();
sb.append("通过Dom4j解析XML,并输出数据:\n");
sb.append(xmlFileName + "\n");
sb.append("----------------遍历start----------------\n");
//遍历当前元素(根元素)的子元素
for (Iterator i_pe = root.elementIterator(); i_pe.hasNext();) {
Element e_pe = (Element) i_pe.next();
//获取当前元素的名字
String person = e_pe.getName();
//获取当前元素的属性
String id = e_pe.attributeValue("id");
String sex = e_pe.attributeValue("sex");
String name = e_pe.element("name").getText();
String age = e_pe.element("age").getText();
//将数据存放到缓冲区字符串对象中
sb.append(person + ":\n");
sb.append("\tid=" + id + " sex=" + sex + "\n");
sb.append("\t" + "name=" + name + " age=" + age + "\n");
//获取当前元素e_pe下的子元素adds
Element e_adds = e_pe.element("adds");
sb.append("\t" + e_adds.getName() + "\n");
//遍历当前元素e_adds(在此是adds元素)的子元素
for (Iterator i_adds = e_adds.elementIterator(); i_adds.hasNext();) {
Element e_add = (Element) i_adds.next();
String code = e_add.attributeValue("code");
String add = e_add.getTextTrim();
sb.append("\t\t" + e_add.getName() + ":" + " code=" + code + " value=\"" + add + "\"\n");
}
sb.append("\n");
}
sb.append("-----------------遍历end-----------------\n");
System.out.println(sb.toString());
//选择性节点,遍历
System.out.println("---------通过XPath获取一个元素----------");
Node node1 = document.selectSingleNode("/doc/person");
System.out.println("输出节点:" +
"\t"+node1.asXML());
Node node2 = document.selectSingleNode("/doc/person/@sex");
System.out.println("输出节点:" +
"\t"+node2.asXML());
Node node3 = document.selectSingleNode("/doc/person[name=\"zhangsan\"]/age");
System.out.println("输出节点:" +
"\t"+node3.asXML());
System.out.println("\n---------XPath获取List节点测试------------");
List list = document.selectNodes("/doc/person[name=\"zhangsan\"]/adds/add");
for(Iterator it=list.iterator();it.hasNext();){
Node nodex=(Node)it.next();
System.out.println(nodex.asXML());
}
System.out.println("\n---------通过ID获取元素的测试----------");
System.out.println("陷阱:通过ID获取,元素ID属性名必须为“大写ID”,小写的“id”会认为是普通属性!");
String id22 = document.elementByID("22").asXML();
String id23 = document.elementByID("23").asXML();
String id24 = null;
if (document.elementByID("24") != null) {
id24 = document.elementByID("24").asXML();
} else {
id24 = "null";
}
System.out.println("id22= " + id22);
System.out.println("id23= " + id23);
System.out.println("id24= " + id24);
}
}
Dom4j生成XML
import java.io.File;
import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.QName;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class CreateXML {
public static void main(String[] args) {
CreateXML c = new CreateXML();
Document document = c.createDocument();
c.writeXML(document, "d:/message.xml");
}
/**
* 写入文件
*/
private void writeXML(Document doc, String path){
try {
XMLWriter writer = new XMLWriter(new FileOutputStream(new File(path)));
writer.write(doc);
writer.close();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
//输出到控制台
writer = new XMLWriter(System.out, format);
writer.write(doc);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 建立Document XML文件
**/
private Document createDocument() {
Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement(QName.get("Message", "http://www.baidu.com"));
Element catalogElement = rootElement.addElement("Header");
catalogElement.addElement("Version").addText("1.0");
catalogElement.addElement("MessageId").addText("STO");
catalogElement.addElement("CorrelationId").addText("10000");
catalogElement.addElement("FromSite").addText("AIRPORT_SITE");
catalogElement.addElement("ToService").addText("RegisterService");
catalogElement.addElement("Personnel").addText("0001223");
catalogElement.addElement("Reserve").addText("STRING");
catalogElement.addElement("GroupId").addText("1000001");
catalogElement.addElement("GroupSize").addText("3");
catalogElement.addElement("GroupIndex").addAttribute("name", "abc")
.addElement("GroupIndex2").addText("2");
Element articleElement = catalogElement.addElement("ToSites");
articleElement.addElement("ToSite").addText("DATA_CENTER_SITE");
return document;
}
}
分享到:
相关推荐
DOM4J通过创建一个对象模型来表示XML文档,使得我们可以像操作Java对象一样操作XML元素。 1. **XML解析**: - 使用`DocumentBuilderFactory`和`DocumentBuilder`类可以将XML字符串转换为`Document`对象,这是DOM4J...
DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件
### 使用dom4j操作XML详解 #### 一、DOM4j简介与配置 **DOM4j** 是一款专为Java平台设计的开源XML解析处理工具。它的设计充分考虑了性能和易用性,同时提供了对DOM、SAX及JAXP等标准的支持,因此非常适合进行复杂...
本教程将详细讲解如何使用DOM4J进行XML的增、删、改、查操作。 **一、XML的基本概念** XML(eXtensible Markup Language)是一种标记语言,用于描述数据结构,通常用于存储和传输数据。DOM(Document Object Model...
在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是Apache软件基金会的一个项目,它通过定义项目对象模型(Project Object Model,POM)来管理项目的构建、...
在本示例中,"dom4jExample.java"是一个Java程序,它展示了如何利用DOM4J库来操作XML文件。 首先,我们需要了解DOM4J的基本概念。DOM4J采用Document Object Model (DOM)接口,但它的实现比标准DOM更快,占用内存更...
在提供的视频资源"17-dom4j解析xml文档(增删改查).avi"中,可能详细展示了这些操作的步骤和示例,观看该视频将进一步加深你对DOM4J操作XML的理解。记得实践是检验理论的最好方式,动手操作会让你更好地掌握这些知识...
DOM4J的核心优势之一在于其丰富的接口体系,这些接口定义在`org.dom4j`包内,提供了对XML文档进行读写、查询、修改等操作的能力。 1. **Attribute**: 代表XML中的属性,可用于获取和设置属性值。 2. **Branch**: ...
Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至...
它提供了简单且高效的API来读取、写入、修改以及操作XML。在这个实例中,我们将深入理解DOM4J库如何帮助我们处理XML文档,并通过实际操作来熟悉其核心功能。 XML(eXtensible Markup Language)是一种用于标记数据...
为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...
DOM4j支持DOM、SAX、JAXP等多种XML解析方式,并内置了对XPath的支持,这使得开发人员能够轻松地进行XML文件的读取、写入以及查询等操作。 **环境搭建:** 1. **下载DOM4j库:** - 前往DOM4j官方网站或其他可信源...
7. **bis和dom4j读写xml文件.files**:这两个文件可能是辅助资源,如样式表或配置文件,用于增强HTML示例的展示效果,或者包含与DOM4J操作XML相关的其他信息。 掌握DOM4J对于Java开发者来说是非常有用的,因为它能...
- **灵活性**:DOM4J提供了灵活的API,使得操作XML文档变得简单。 - **效率**:虽然DOM4J使用DOM模型,但通过优化实现了相对较高的性能。 - **兼容性**:除了SAX和DOM,DOM4J还支持StAX和JDOM等其他解析器,具有...
在这个主题中,我们将深入探讨如何使用DOM4J进行XML操作。 首先,理解XML是必要的。XML(eXtensible Markup Language)是一种标记语言,用于存储和传输结构化数据。它的主要用途是作为数据交换格式,尤其是在不同的...
它提供了灵活、高性能的方式来解析、创建、更新和操作XML。在本文中,我们将深入探讨如何利用DOM4J进行XML文件的读取、写入和修改操作。 一、XML基础 XML(Extensible Markup Language)是一种标记语言,用于存储和...
标题与描述均指向了“Java DOM4J操作XML”的主题,这一知识点主要涵盖了如何使用DOM4J库在Java中解析、操作和生成XML文档。DOM4J是一个简单、高效的Java库,用于处理XML数据,提供了丰富的API来读取、修改和创建XML...