- 浏览: 127628 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wind35:
32赞~~~
KDB+ database -
sunnyxiaoxi:
图片看不到
KDB+ database 初步 -
RonQi:
确实很有用的插件
eclipse插件 快速打开文件位置,在命令行打开文件位置 -
zhanshi258:
我们程序员讲究的是严谨,大部分人是讲娱乐
小唠叨 -
li498833284:
因为很多都是屏蔽字
小唠叨
首先我们给出一段示例程序:
importjava.io.File;
importjava.io.FileWriter;
importjava.util.Iterator;
importorg.dom4j.Document;
importorg.dom4j.DocumentHelper;
importorg.dom4j.Element;
importorg.dom4j.io.OutputFormat;
importorg.dom4j.io.SAXReader;
importorg.dom4j.io.XMLWriter;
publicclassDOM4JTest{
/***//***/
/***//***/
/***//***/
/***//**
*DOM4J读写XML示例
*
*@paramargs
*@throwsException
*/
publicstaticvoidmain(String[]args){
try{
XMLWriterwriter=null;//声明写XML的对象
SAXReaderreader=newSAXReader();
OutputFormatformat=OutputFormat.createPrettyPrint();
format.setEncoding("GBK");//设置XML文件的编码格式
StringfilePath="d:\\student.xml";
Filefile=newFile(filePath);
if(file.exists()){
Documentdocument=reader.read(file);//读取XML文件
Elementroot=document.getRootElement();//得到根节点
booleanbl=false;
for(Iteratori=root.elementIterator("学生");i.hasNext();){
Elementstudent=(Element)i.next();
if(student.attributeValue("sid").equals("001")){
//修改学生sid=001的学生信息
student.selectSingleNode("姓名").setText("王五");
student.selectSingleNode("年龄").setText("25");
writer=newXMLWriter(newFileWriter(filePath),format);
writer.write(document);
writer.close();
bl=true;
break;
}
}
if(bl){
//添加一个学生信息
Elementstudent=root.addElement("学生");
student.addAttribute("sid","100");
Elementsid=student.addElement("编号");
sid.setText("100");
Elementname=student.addElement("姓名");
name.setText("嘎嘎");
Elementsex=student.addElement("性别");
sex.setText("男");
Elementage=student.addElement("年龄");
age.setText("21");
writer=newXMLWriter(newFileWriter(filePath),format);
writer.write(document);
writer.close();
}
}else{
//新建student.xml文件并新增内容
Document_document=DocumentHelper.createDocument();
Element_root=_document.addElement("学生信息");
Element_student=_root.addElement("学生");
_student.addAttribute("sid","001");
Element_id=_student.addElement("编号");
_id.setText("001");
Element_name=_student.addElement("姓名");
_name.setText("灰机");
Element_age=_student.addElement("年龄");
_age.setText("18");
writer=newXMLWriter(newFileWriter(file),format);
writer.write(_document);
writer.close();
}
System.out.println("操作结束!");
}catch(Exceptione){
e.printStackTrace();
}
}
}
importjava.io.FileWriter;
importjava.util.Iterator;
importorg.dom4j.Document;
importorg.dom4j.DocumentHelper;
importorg.dom4j.Element;
importorg.dom4j.io.OutputFormat;
importorg.dom4j.io.SAXReader;
importorg.dom4j.io.XMLWriter;
publicclassDOM4JTest{
/***//***/
/***//***/
/***//***/
/***//**
*DOM4J读写XML示例
*
*@paramargs
*@throwsException
*/
publicstaticvoidmain(String[]args){
try{
XMLWriterwriter=null;//声明写XML的对象
SAXReaderreader=newSAXReader();
OutputFormatformat=OutputFormat.createPrettyPrint();
format.setEncoding("GBK");//设置XML文件的编码格式
StringfilePath="d:\\student.xml";
Filefile=newFile(filePath);
if(file.exists()){
Documentdocument=reader.read(file);//读取XML文件
Elementroot=document.getRootElement();//得到根节点
booleanbl=false;
for(Iteratori=root.elementIterator("学生");i.hasNext();){
Elementstudent=(Element)i.next();
if(student.attributeValue("sid").equals("001")){
//修改学生sid=001的学生信息
student.selectSingleNode("姓名").setText("王五");
student.selectSingleNode("年龄").setText("25");
writer=newXMLWriter(newFileWriter(filePath),format);
writer.write(document);
writer.close();
bl=true;
break;
}
}
if(bl){
//添加一个学生信息
Elementstudent=root.addElement("学生");
student.addAttribute("sid","100");
Elementsid=student.addElement("编号");
sid.setText("100");
Elementname=student.addElement("姓名");
name.setText("嘎嘎");
Elementsex=student.addElement("性别");
sex.setText("男");
Elementage=student.addElement("年龄");
age.setText("21");
writer=newXMLWriter(newFileWriter(filePath),format);
writer.write(document);
writer.close();
}
}else{
//新建student.xml文件并新增内容
Document_document=DocumentHelper.createDocument();
Element_root=_document.addElement("学生信息");
Element_student=_root.addElement("学生");
_student.addAttribute("sid","001");
Element_id=_student.addElement("编号");
_id.setText("001");
Element_name=_student.addElement("姓名");
_name.setText("灰机");
Element_age=_student.addElement("年龄");
_age.setText("18");
writer=newXMLWriter(newFileWriter(file),format);
writer.write(_document);
writer.close();
}
System.out.println("操作结束!");
}catch(Exceptione){
e.printStackTrace();
}
}
}
执行结果应该是这样:
循环解析节点:
privatevoidgetAllNodes(Stringxml){
try{
Documentauthtmp=DocumentHelper.parseText(xml);
List<Element>list=authtmp.selectNodes("//sms/node");
for(intj=0;j<list.size();j++){
Elementnode=(Element)list.get(j);
nodeByNodes(node);
}
}catch(Exceptione){
e.printStackTrace();
}
}
privatevoidnodeByNodes(Elementnode){
if(node.element("node")!=null){
Stringid=node.attributeValue("id");
Stringname=node.attributeValue("name");
System.out.print(id+"-------");
System.out.println(name);
for(Iteratori=node.elementIterator("node");i.hasNext();){
ElementnewNode=(Element)i.next();
nodeByNodes(newNode);
}
}else{
Stringid=node.attributeValue("id");
Stringname=node.attributeValue("name");
System.out.print(id+"-------");
System.out.println(name);
}
}
try{
Documentauthtmp=DocumentHelper.parseText(xml);
List<Element>list=authtmp.selectNodes("//sms/node");
for(intj=0;j<list.size();j++){
Elementnode=(Element)list.get(j);
nodeByNodes(node);
}
}catch(Exceptione){
e.printStackTrace();
}
}
privatevoidnodeByNodes(Elementnode){
if(node.element("node")!=null){
Stringid=node.attributeValue("id");
Stringname=node.attributeValue("name");
System.out.print(id+"-------");
System.out.println(name);
for(Iteratori=node.elementIterator("node");i.hasNext();){
ElementnewNode=(Element)i.next();
nodeByNodes(newNode);
}
}else{
Stringid=node.attributeValue("id");
Stringname=node.attributeValue("name");
System.out.print(id+"-------");
System.out.println(name);
}
}
其次DOM4J的解释
一.Document对象相关
1.读取XML文件,获得document对象.
SAXReaderreader=newSAXReader();
Documentdocument=reader.read(newFile("input.xml"));
Documentdocument=reader.read(newFile("input.xml"));
2.解析XML形式的文本,得到document对象.
Stringtext="<members></members>";
Documentdocument=DocumentHelper.parseText(text);
Documentdocument=DocumentHelper.parseText(text);
3.主动创建document对象.
Documentdocument=DocumentHelper.createDocument();
Elementroot=document.addElement("members");//创建根节点
Elementroot=document.addElement("members");//创建根节点
二.节点相关
1.获取文档的根节点.
ElementrootElm=document.getRootElement();
2.取得某节点的单个子节点.
ElementmemberElm=root.element("member");//"member"是节点名
3.取得节点的文字
String text=memberElm.getText();
也可以用:
String text=root.elementText("name");
这个是取得根节点下的name字节点的文字.
4.取得某节点下名为"member"的所有字节点并进行遍历.
Listnodes=rootElm.elements("member");
for(Iteratorit=nodes.iterator();it.hasNext();){
Elementelm=(Element)it.next();
//dosomething
}
for(Iteratorit=nodes.iterator();it.hasNext();){
Elementelm=(Element)it.next();
//dosomething
}
5.对某节点下的所有子节点进行遍历.
for(Iteratorit=root.elementIterator();it.hasNext();){
Elementelement=(Element)it.next();
//dosomething
}
Elementelement=(Element)it.next();
//dosomething
}
6.在某节点下添加子节点.
Element ageElm = newMemberElm.addElement("age");
7.设置节点文字.
ageElm.setText("29");
8.删除某节点.
parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点
9.添加一个CDATA节点.
Element contentElm = infoElm.addElement("content");
contentElm.addCDATA(diary.getContent());
contentElm.getText(); // 特别说明:获取节点的CDATA值与获取节点的值是一个方法
contentElm.clearContent(); //清除节点中的内容,CDATA亦可
contentElm.addCDATA(diary.getContent());
contentElm.getText(); // 特别说明:获取节点的CDATA值与获取节点的值是一个方法
contentElm.clearContent(); //清除节点中的内容,CDATA亦可
三.属性相关.
1.取得某节点下的某属性
Element root=document.getRootElement();
Attribute attribute=root.attribute("size");// 属性名name
Attribute attribute=root.attribute("size");// 属性名name
2.取得属性的文字
String text=attribute.getText();
也可以用:
String text2=root.element("name").attributeValue("firstname");
这个是取得根节点下name字节点的属性firstname的值.
3.遍历某节点的所有属性
Elementroot=document.getRootElement();
for(Iteratorit=root.attributeIterator();it.hasNext();){
Attributeattribute=(Attribute)it.next();
Stringtext=attribute.getText();
System.out.println(text);
}
for(Iteratorit=root.attributeIterator();it.hasNext();){
Attributeattribute=(Attribute)it.next();
Stringtext=attribute.getText();
System.out.println(text);
}
4.设置某节点的属性和文字.
newMemberElm.addAttribute("name", "sitinspring");
5.设置属性的文字
Attribute attribute=root.attribute("name");
attribute.setText("sitinspring");
attribute.setText("sitinspring");
6.删除某属性
Attribute attribute=root.attribute("size");// 属性名name
root.remove(attribute);
root.remove(attribute);
四.将文档写入XML文件.
1.文档中全为英文,不设置编码,直接写入的形式.
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
writer.write(document);
writer.close();
writer.write(document);
writer.close();
2.文档中含有中文,设置编码格式写入的形式.
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");// 指定XML编码
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);
writer.write(document);
writer.close();
format.setEncoding("GBK");// 指定XML编码
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);
writer.write(document);
writer.close();
五.字符串与XML的转换
1.将字符串转化为XML
String text = "<members> <member>sitinspring</member> </members>";
Document document = DocumentHelper.parseText(text);
Document document = DocumentHelper.parseText(text);
2.将文档或节点的XML转化为字符串.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
Element root=document.getRootElement();
String docXmlText=document.asXML();
String rootXmlText=root.asXML();
Element memberElm=root.element("member");
String memberXmlText=memberElm.asXML();
Document document = reader.read(new File("input.xml"));
Element root=document.getRootElement();
String docXmlText=document.asXML();
String rootXmlText=root.asXML();
Element memberElm=root.element("member");
String memberXmlText=memberElm.asXML();
出自 http://www.blogjava.net/biiau/archive/2008/09/24/231005.html
发表评论
-
入手Git
2013-09-18 21:57 1038原本项目一直托管在sourceforge上面. http: ... -
以插件的方式把myeclipse安装到eclipse
2013-04-27 16:56 85871, 请注意eclipse版本问题,笔者用的是eclips ... -
从与大牛richard stallman 聊来的感受
2012-04-25 10:03 940老头非常敬业热心, 写邮件给他, 就算没有时间马上回, 也会有 ... -
Jar Class Finder
2012-04-15 22:38 945Jar Class Finder Jar与Class的查找工 ... -
sourceforge 历程
2012-04-14 19:36 0入门 http://newbiedoc.sourceforg ... -
版本控制之MKS integrity 2007
2011-01-06 16:28 0在新项目中用到了版本控制MKS integrity 2007 -
Open-source License
2010-03-04 11:22 1948Open-source License(转载) ... -
Java 多线程与并发编程专题
2009-11-18 15:55 685http://www.ibm.com/developerwor ... -
浅析Context Class Loader
2009-11-19 11:33 1133转载自 薛笛的专栏http://blog.csdn.net/k ... -
JVM调优总结
2009-11-19 15:35 789转载自http://gq913.iteye.com ... -
Ant build.xml 模板
2009-11-23 14:04 1015<?xml version="1.0" ... -
用javac编译生成不同版本的源码和目标class
2009-11-24 14:47 906转载请自 Ken Wu`s Blog! 合理使用javac的 ... -
java内存模型详解
2009-11-24 14:50 772转载自 Ken Wu`s Blog! 内存模型 (memo ... -
bootstrap类加载原理
2009-11-24 14:53 903转载自 Ken Wu`s Blog! 让我们一起跟随Clas ... -
很详细的Log4j配置
2009-11-25 11:01 711来自: http://www.blogjava.net/zJu ... -
Log4j日志文件的使用
2009-11-25 17:32 908转自 http://blog.csdn.net/edg_edu ... -
另一个好的ant文件收藏
2009-11-26 13:30 924<?xml version="1.0" ... -
提示补全组件:Kissy Suggest
2009-11-26 14:06 1016转自 http://www.iteye.com/topic/4 ... -
String in Java
2009-11-26 15:36 782转自 http://hxraid.iteye.com/blog ... -
自定义ClassLoader 简单例子
2009-12-10 16:15 1435转载自 http://www.javaresearch.org ...
相关推荐
要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...
基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。
在“dom4j解析xml文件(增删改查)”这个主题中,我们将深入探讨如何使用DOM4J来实现XML文档的四种基本操作:增加元素、删除元素、更新元素内容以及查询元素。 首先,让我们了解DOM4J的基本用法。在解析XML文件时,...
6. **Namespace支持**:DOM4J提供了对XML命名空间的全面支持,可以方便地处理包含命名空间的XML文档。 7. **DocumentType支持**:对于包含DOCTYPE声明的XML文档,DOM4J可以处理这些声明,并提供对应的DocumentType...
### 使用dom4j读写XML文档的关键知识点 #### 一、简介与安装 - **DOM4J** 是一款用于处理XML文档的Java库,它提供了简单且强大的API来解析、创建、修改XML文档。 - 官方网站:[http://www.dom4j.org/]...
DOM4J的核心优势之一在于其丰富的接口体系,这些接口定义在`org.dom4j`包内,提供了对XML文档进行读写、查询、修改等操作的能力。 1. **Attribute**: 代表XML中的属性,可用于获取和设置属性值。 2. **Branch**: ...
6. **示例代码**:压缩包中的“dom4j读写xml文件.htm”可能包含了具体的代码示例,演示了如何使用DOM4J读取和写入XML文件。通常,这些示例会包括打开XML文件、获取根元素、遍历元素、修改元素内容、以及保存修改后的...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除...
### Dom4J生成XML的完整方法详解 在Java开发领域,处理XML文档是常见的需求之一。Dom4J作为一款优秀的Java XML API,...掌握以上知识点,开发者即可熟练运用Dom4J生成复杂的XML文档,满足项目中对XML数据处理的需求。
DOM4J是基于DOM模型的,但相比标准的Java DOM,它提供了更加简洁和高效的API,使得开发者在处理XML文档时更加方便。 XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于网络数据交换、配置...
DOM4J对DOM进行了优化,提供了更多便利的功能。 1. **DOM4J读取XML**:使用`dom4j.io.SAXReader`读取XML,可以轻松地访问和操作XML元素。 2. **DOM4J写入XML**:创建`Document`,添加元素和属性,然后使用`dom4j.io...
Dom4j解析教程。详细讲解如何使用dom4j解析xml,简单易懂。
### DOM4J解析XML知识点详解 ...通过结合使用DOM4J的基本类和XPath表达式,可以轻松地实现对XML文档的查询和修改。无论是对于开发人员还是对于那些需要频繁处理XML数据的应用程序来说,DOM4J都是一个非常有价值的工具。
要开始解析XML文件,首先需要导入DOM4J的相关包: ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; ``` 接下来,我们将创建...
**使用DOM4J对XML的读写** DOM4J是一个非常强大的Java库,专门用于处理XML文档。它提供了丰富的API,使得XML的读取、创建、修改和解析变得简单易行。相较于JDOM,DOM4J确实提供了更多的功能,虽然在学习曲线方面...
本篇文章将深入探讨如何使用DOM4J来解析XML文件,以及通过示例代码来展示其基本操作。 首先,我们需要理解DOM4J的工作原理。DOM4J采用的是DOM(Document Object Model)模型,它将整个XML文档加载到内存中形成一棵...