public class TestDom4j {
/**
* dom4j生成XML步骤: 1.创建Document对象,Document document =
* DocumentHelper.createDocument(); 2.生成根节点,Element root =
* document.addElement("beans"); 3.添加标签,Element bean = root.addElement("bean");
* 4.给标签添加属性 5.依次重复3,4步骤可得到较为复杂的XML 6设置xml的输出格式,即对xml格式化
*
*
* dom4j解析XML步骤: 1.读取资源文件,获得Document对象,Document document = new
* SAXReader().read(new File(path)); 2.获取根节点,Element root =
* document.getRootElement();
* 3.根据特定标签(如根节点)称获取所有的指定标签(如bean),
List<Element> list = root.elements("bean");
* 4.遍历所有指定标签的属性,这里和生成xml时略有不同,因为同一标签可能会出现多次,
* for(Element bean : list)
* {String id = bean.attributeValue("id");}
*5.如子标签下还有子标签,重复3,4的步骤可得到所需的结果
*
*/
public static void main(String[] args) throws Exception {
// System.out.println(generation("D:/user.xml"));
try {
// 获取解析完后的解析信息
HashMap<String, String> hashMap;
// 遍历整个XML文件
hashMap = new HashMap<String, String>();
iterateWholeXML("D:/user.xml", hashMap);
System.out.println("Id\t姓名\t密码");
for (int i = 0; i < hashMap.size(); i+=3) {
int j = i/3;
System.out.print(hashMap.get("user-id" + j) + "\t");
System.out.print(hashMap.get("name" + j) + "\t");
System.out.println(hashMap.get("password" + j) + "\t");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 采用dom4j生成xml
*
* @param path
* : 生成文件的绝对路径,该参数仅在写入文件时有效
* @return
*/
public static String generation(String path) {
// 声明xml字符串
String fileString = "";
// 创建Document对象
Document document = DocumentHelper.createDocument();
// 生成根节点(beans)
Element root = document.addElement("users");
//在"users"根节点下添加了3个"user"标签
for (int i = 1; i < 3; i++) {
// 第一层,在根节点下添加"bean"标签
Element bean = root.addElement("user");
// 给"bean"标签添加属性
bean.addAttribute("id", "" + i);
bean.addElement("name").addText("name"+i);
bean.addElement("password").addText("passoword"+i);
}
// 设置xml输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
java.io.Writer writer = new java.io.StringWriter();
XMLWriter xmlWriter = new XMLWriter(writer, format);
try {
xmlWriter.write(document);
fileString = writer.toString();
xmlWriter.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
// System.out.println(fileString);
writeLocalFile(path, fileString);// 这里是写入本地文件。也可以将该字符串以流的形式输出到其他目的地
return fileString;
}
/**
* 采用字符流将context写到指定文件
* @param path : 写入文件的绝对路径
* @param context : 写入的内容
*/
public static void writeLocalFile(String path, String context) {
try {
java.io.Writer writer = new java.io.FileWriter(path);
writer.write(context);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void iterateWholeXML(String filename,HashMap<String, String> hm) {
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(new File(filename));
Element root = document.getRootElement();
// 用于记录user编号的变量
int num = -1;
// 遍历根结点(users)的所有孩子节点(肯定是user节点)
for (Iterator iter = root.elementIterator(); iter.hasNext();) {
Element element = (Element) iter.next();
num++;
// 获取user节点的id属性的值
Attribute idAttr = element.attribute("id");
if (idAttr != null) {
String id = idAttr.getValue();
if (id != null && !id.equals("")) {
hm.put(element.getName() + "-" + idAttr.getName() + num,id);
}
}
// 遍历user结点的所有孩子节点(即name,password),并进行处理
for (Iterator iterInner=element.elementIterator(); iterInner.hasNext();)
{
Element elementInner = (Element) iterInner.next();
hm.put(elementInner.getName() + num,elementInner.getText());
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j 生成 XML 文档非常简单。首先,我们需要创建一个 Document 对象,然后添加元素和属性。下面是一个生成 XML 文档的...
Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至...
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...
5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...
这篇博客()可能详细介绍了如何使用DOM4J来生成和解析XML文件,这对于处理XML文档的开发人员来说是非常有用的工具。 **1. 生成XML文件** 生成XML文件主要涉及以下步骤: - **创建Document对象**:DOM4J通过`...
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
DOM4J解析XML文档: DOM4J通过构建DOM树(Document Object Model)来解析XML。DOM模型是一种将XML文档转换为内存中对象树的表示方式。在DOM4J中,我们可以使用`DocumentBuilderFactory`和`DocumentBuilder`来创建`...
解析XML文件后,DOM4J会构建一个`Document`对象树,你可以通过这个树来访问和操作XML的所有元素。 - **Element对象**:`Element`是XML文档中的节点,相当于HTML的`<tag>`。DOM4J提供了丰富的API来操作元素,如获取...
Java DOM4J库是用于处理XML文档的一个强大的开源框架,它提供了一种简单而灵活的方式来创建、解析和操作XML文件。DOM4J这个名字中的“DOM”代表文档对象模型(Document Object Model),这是一种标准的API,用于在...
在这个项目中,我们利用DOM4J来解析XML文件,并通过Java的反射机制将解析出的信息存储到特定的类中。 首先,我们需要了解XML的基本概念。XML(Extensible Markup Language)是一种标记语言,常用于数据交换和结构化...
Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...
在这个场景中,我们将深入理解如何使用DOM4J来生成XML文档以及如何解析XML内容。 首先,生成XML文档涉及以下几个主要步骤: 1. **创建Document对象**:`DocumentHelper.createDocument()`方法用于创建一个新的XML...
本文将详细介绍生成和解析XML的四种主要方法:DOM、DOM4J、SAX和JDOM。 1. DOM(Document Object Model) DOM是W3C组织推荐的一种解析XML的标准方式。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...
在提供的文件列表中,`Test.java`可能包含使用DOM4J解析XML的示例代码。通常,这样的代码会包含以下部分: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; // ...
4. **文档构建**:除了解析XML,DOM4J也方便地提供了构建XML文档的功能。你可以创建新的元素、属性,以及它们之间的关系,然后将整个结构写入XML文件。 5. **事件驱动编程**:DOM4J支持SAX事件驱动的解析模式,可以...
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
1. **解析XML文件**:使用DOM4J的`DocumentFactory`创建解析器,如`SAXReader`,然后读取XML文件,生成一个`Document`对象。 2. **访问XML结构**:通过`Document`对象,可以获取根元素(`Element`),进一步遍历...
- **Dom4jUtil.java**: 包含DOM4J相关的实用工具函数,如创建和解析XML的辅助方法。 - **Dom4jTest.java**: 测试类,使用JUnit编写,用于验证DOM4JUtil的功能是否正常工作。 - **说明.txt**: 提供了关于如何使用这些...