package com.meizu58.dom4j;
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class DOM4JTest {
public static void main(String[] args) throws Exception {
//读取xml ,解析xml。
readDocument();
//创建xml
// createDocument();
}
public static void readDocument() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("Student.hbm.xml"));
Element rootElement = document.getRootElement();
//打印根节点
p("rootElement.getName() = "+rootElement.getName());
//准备打印子节点和子节点的属性
for(Iterator i = rootElement.elementIterator();i.hasNext();){
Element element = (Element)i.next();
//打印根节点
p("element.getName() = "+element.getName());
//1 打印子节点的所有属性name和value
for(Iterator j = element.attributeIterator();j.hasNext();){
Attribute attribute = (Attribute)j.next();
p(attribute.getName()+" = "+attribute.getValue());
}
}
p("2xpath-----------------------------------------------------------");
//2 xpath (为了方便记忆可以理解为类似sql的按条件查询)
List<Node> list = document.selectNodes("//hibernate-mapping/class/property");
for(Node n:list){
p(n.getName());
p("n.valueOf() = "+n.valueOf("@name"));
//得到xml里文本值 getText()
p("n.getText() = "+n.getText());
}
//读取指定到属性的元素
String a = document.selectSingleNode("//hibernate-mapping/class/property[@type='name2']").getText();
p("a = "+a);
}
public static Document createDocument() throws Exception{
Document document = DocumentHelper.createDocument();
Element root = document.addElement("hibernamet-mapping");
Element classElement = root.addElement("class").addAttribute("class", "com.meizu58.Student").addAttribute("table", "t_student");
classElement.addElement("property").addAttribute("name", "username");
//设置xml里的文本值setText
classElement.addElement("property").addAttribute("name", "password").setText("123456789");
OutputFormat format = OutputFormat.createPrettyPrint();
//XMLWriter writer = new XMLWriter(new FileWriter("Student2.hbm.xml"),format);
//解决了由于编码(上面的为GBK,tld头文件确是Utf-8)不能解析的问题,现在统一为utf-8
XMLWriter writer = new XMLWriter(new FileOutputStream("Student2.hbm.xml"), format); writer.write(document);
writer.close();
return document;
}
//公共调用的输出方法
public static void p(Object o){
System.out.println(o);
}
}
student.hbm.xml
<hibernate-mapping>
<class name="com.meizu58.Student" table="t_student">
<property name="username" type="name1">name1的value</property>
<property name="username" type="name2">name2的value</property>
<property name="password"></property>
<property name="赵四name">赵四value</property>
</class>
</hibernate-mapping>
分享到:
相关推荐
1. **解析XML**:DOM4J可以读取XML文件,将其转换为一个树形结构,即Document对象。解析器有SAX和DOM两种模式,SAX是事件驱动的,适用于大文件,而DOM则将整个文档加载到内存中,适合小文件。 2. **创建XML**:DOM4...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J的名字来源于Document Object Model(DOM)和Java的组合,但它并不完全遵循W3C的DOM规范...
1. **XML解析**:DOM4J提供了多种方式来解析XML文档,包括SAX和DOM解析器。它也支持StAX和JDOM,提供了一种统一的API来处理不同解析模型。 2. **XPath支持**:DOM4J通过集成`jaxen`,可以方便地执行XPath查询,从而...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、查询和修改变得更为简单。在本文中,我们将深入探讨DOM4J 1.6.1版本的安装及其在Maven项目中的应用。 首先,DOM4J...
1. **丰富的API**:DOM4J提供了大量的接口和类,涵盖了XML处理的各个方面,如解析、创建、遍历、修改和查询XML文档。这些API设计简洁,易于理解和使用。 2. **XPath支持**:DOM4J支持XPath表达式,使得开发者可以...
1. 支持XPath:DOM4J提供了一种强大的方式来查询XML文档,通过XPath表达式可以轻松地找到需要的数据。 2. 文档对象模型:它允许开发者以面向对象的方式处理XML文档,包括元素、属性、文本节点等。 3. 轻量级:DOM4J...
1. **DOM4J概述**:DOM4J是一个开源项目,它提供了全面的XML处理功能,包括解析、生成、修改和查询XML文档。它不仅支持W3C的DOM API,还提供了基于事件的SAX和直接的DOM接口。 2. **核心概念**:主要包括Document...
1. **XML解析**:DOM4J可以快速地将XML文档解析成Document对象,通过XPath表达式进行查询。它支持SAX和DOM两种解析方式,SAX适合处理大型XML文件,而DOM适合小型文件,因为它将整个文档加载到内存中。 2. **文档操作...
1. **灵活的文档构建**:DOM4J提供了多种方式来创建和修改XML文档,如通过元素、属性、文本节点等对象直接操作,或者使用XPath表达式定位。 2. **强大的查询能力**:DOM4J支持XPath,可以方便地通过路径表达式查找...
1. **Element**: DOM4J中的Element类代表XML文档中的元素节点,它是DOM4J中最重要的类。通过Element,我们可以获取或设置元素的属性,添加子元素,以及遍历元素的子节点。 2. **Attribute**: 属性是元素的一部分,...
1. **XML解析与构建**:DOM4J支持SAX和DOM解析器,可以将XML文档解析为树形结构。同时,它也提供了构建XML文档的方法,允许开发者动态创建XML内容。 2. **XPath支持**:DOM4J实现了XPath,这是一种强大的查询XML...
1. **解析XML**:DOM4J提供了两种主要的解析方式,SAX(Simple API for XML)和DOM。SAX解析器是基于事件的,适用于大型XML文件,因为它只需要较少的内存。DOM解析器则会将整个XML文档加载到内存中,适合小到中等...
1. **XML解析**:DOM4J支持多种解析方式,包括SAX解析、DOM解析和DOM4J自己的解析器。SAX解析适用于大文件,因为它按需读取,节省内存;DOM解析则将整个XML文档加载到内存,适合小文件;DOM4J解析器则提供了更灵活的...
赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...
1. 易于使用:DOM4J的API设计直观,使得开发者可以快速上手,减少学习成本。它提供了丰富的接口和类,能够以面向对象的方式处理XML文档。 2. 性能优异:相比其他XML解析库,DOM4J在处理大规模XML文档时表现出更好的...
1. **下载**:首先,你需要从官方网站或者其他可信的源下载最新版本的dom4j.jar。 2. **解压**:如果下载的是包含多个文件的压缩包,你需要解压后找到dom4j.jar。 3. **引入工程**:将dom4j.jar文件放入你的Java项目...
1. **文档模型**:DOM4J提供了一种面向对象的XML文档模型,允许开发者以树形结构来操作XML文档。例如,可以创建、修改、删除XML元素、属性等。 2. **XPath支持**:DOM4J支持XPath表达式,这是对XML文档进行查询的...
赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...
1. **介绍**:解释DOM4J的基本概念和设计目标,以及如何在项目中引入DOM4J库。 2. **安装与配置**:指导用户如何将DOM4J添加到Java项目中,包括Maven依赖、Gradle构建脚本或者直接添加JAR文件。 3. **基本概念**:...
JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1...dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1