- 浏览: 138732 次
- 性别:
- 来自: 北京
最新评论
-
笑傲郝:
JSP中,hidden用法 -
眼镜蛇:
哦,找到了,getComboVc()。开始没细看。不好意思
Swing中可多选下拉框的简单实现 -
眼镜蛇:
朋友不知你还能不能看到,这个组件写得非常好。但我想知道,我应该 ...
Swing中可多选下拉框的简单实现 -
lzth:
--什么是命名查询?
Hibernate允许在映射文件中定义 ...
Hibernate中sql-query return CDATA 用法 -
wuzhiyuzhi:
在这里面写SQL有什么用的呀?为什么要在XML里这样写?
Hibernate中sql-query return CDATA 用法
package com.xskj; import java.io.File; import java.io.FileWriter; import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class DOM4JTest { /** * DOM4J读写XML * * @param Admin * @throws Exception */ public static void main(String[] args) { try { XMLWriter writer = null;// 声明写XML的对象 SAXReader reader = new SAXReader(); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GBK");// 设置XML文件的编码格式 String filePath = "d:\\student.xml"; File file = new File(filePath); if (file.exists()) { Document document = reader.read(file);// 读取XML文件 Element root = document.getRootElement();// 得到根节点 boolean bl = false; for (Iterator i = root.elementIterator("student"); i.hasNext();) { Element student = (Element) i.next(); if (student.attributeValue("sid").equals("001")) { // 修改学生sid=001的学生信息 student.selectSingleNode("name").setText("wangw"); student.selectSingleNode("age").setText("25"); writer = new XMLWriter(new FileWriter(filePath), format); writer.write(document); writer.close(); bl = true; break; } } if (bl) { // 添加一个学生信息 Element student = root.addElement("student"); student.addAttribute("sid", "100"); Element sid = student.addElement("no"); sid.setText("100"); Element name = student.addElement("name"); name.setText("xiaof"); Element sex = student.addElement("sex"); sex.setText("boy"); Element age = student.addElement("age"); age.setText("29"); writer = new XMLWriter(new FileWriter(filePath), format); writer.write(document); writer.close(); } } else { // 新建student.xml文件并新增内容 Document _document = DocumentHelper.createDocument(); Element _root = _document.addElement("studentinfo"); Element _student = _root.addElement("student"); _student.addAttribute("sid", "001"); Element _id = _student.addElement("no"); _id.setText("001"); Element _name = _student.addElement("name"); _name.setText("xiaoli"); Element _age = _student.addElement("age"); _age.setText("28"); writer = new XMLWriter(new FileWriter(file), format); writer.write(_document); writer.close(); } System.out.println("操作结束! "); } catch (Exception e) { e.printStackTrace(); } } }
执行结果应该是这样:
循环解析节点:
private void getAllNodes(String xml) { try { Document authtmp = DocumentHelper.parseText(xml); List<Element> list = authtmp.selectNodes("//sms/node"); for (int j = 0; j < list.size(); j++) { Element node = (Element) list.get(j); nodeByNodes(node); } } catch (Exception e) { e.printStackTrace(); } } private void nodeByNodes(Element node) { if (node.element("node") != null) { String id = node.attributue("id"); String name = node.attributue("name"); System.out.print(id + "-------"); System.out.println(name); for (Iterator i = node.elementIterator("node"); i.hasNext();) { Element newNode = (Element) i.next(); nodeByNodes(newNode); } } else { String id = node.attributue("id"); String name = node.attributue("name"); System.out.print(id + "-------"); System.out.println(name); } }
其次DOM4J的解释
一.Document对象相关
1.读取XML文件,获得document对象.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
2.解析XML形式的文本,得到document对象.
String text = "<members></members>";
Document document = DocumentHelper.parseText(text);
3.主动创建document对象.
Document document = DocumentHelper.createDocument();
Element root = document.addElement("members");// 创建根节点
二.节点相关
1.获取文档的根节点.
Element rootElm = document.getRootElement();
2.取得某节点的单个子节点.
Element memberElm=root.element("member");// "member"是节点名
3.取得节点的文字
String text=memberElm.getText();也可以用:
String text=root.elementText("name");这个是取得根节点下的name字节点的文字.
4.取得某节点下名为"member"的所有字节点并进行遍历.
List nodes = rootElm.elements("member"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); // do something }
5.对某节点下的所有子节点进行遍历.
for(Iterator it=root.elementIterator();it.hasNext();){ Element element = (Element) it.next(); // do something }
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亦可
三.属性相关.
1.取得某节点下的某属性
Element root=document.getRootElement(); Attribute attribute=root.attribute("size");// 属性名name
2.取得属性的文字
String text=attribute.getText();也可以用:
String text2=root.element("name").attributue("firstname");这个是取得根节点下name字节点的属性 firstname的值.
3.遍历某节点的所有属性
Element root=document.getRootElement(); for(Iterator it=root.attributeIterator();it.hasNext();){ Attribute attribute = (Attribute) it.next(); String text=attribute.getText(); System.out.println(text); }
4.设置某节点的属性和文字.
newMemberElm.addAttribute("name", "sitinspring");
5.设置属性的文字
Attribute attribute=root.attribute("name");
attribute.setText("sitinspring");
6.删除某属性
Attribute attribute=root.attribute("size");// 属性名name
root.remove(attribute);
四.将文档写入XML文件.
1.文档中全为英文,不设置编码,直接写入的形式.
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
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();
五.字符串与XML的转换
1.将字符串转化为XML
String text = "<members> <member>sitinspring</member> </members>";
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();
发表评论
-
java中serializable是什么
2012-04-27 10:02 0一个对象序列化的接口,一个类只有实现了Serializab ... -
Java获取本地IP
2012-04-26 17:36 825import java.net.*; pub ... -
Swing中可多选下拉框的简单实现
2011-07-08 11:00 8519实现可多选下拉框需要写三个类: MyComboBox ... -
我为什么选择 iBatis 而不是 Hibernate(对于正在选型的人的建议)
2011-07-07 15:10 927[注意]清在回复之前认真地看一下我的帖子,结合你的实际项目经验 ... -
选择Hibernate还是iBatis?
2011-07-07 15:05 992选择Hibernate还是iBATIS都有它的道理: Hi ... -
通过 JAVA SWING 看透 MVC 设计模式[组图]
2011-07-05 12:42 1118一个好的用户界面(GUI) ... -
Swing MVC 结构
2011-07-05 10:03 1588MVC 是 Model-View-Controller 的简称 ... -
JTree放入JSplitPane范例
2011-07-02 14:58 1161范例1 import javax.swing.JFrame; ... -
STRUTS的struts--config.xml详解
2011-06-16 15:42 170101.<?xml version="1.0&q ... -
Proxool连接池实现
2011-06-16 11:13 920首先从 http://proxool.sourceforg ... -
<c:out value="${}"/>|JSTL标签|标签库和EL
2011-04-28 17:15 1276这是JSTL标签的用法 JST ... -
Spring MVC 入门
2011-04-15 14:07 809这篇文章将教你快速地上手使用 Spring 框架. 如果你 ... -
DispatcherServlet定义档
2011-04-15 10:11 1206DispatcherServlet预设使用servle ... -
JavaMail发送
2011-03-31 17:37 708public boolean sendMailWithPic( ... -
Velocity用法
2011-03-31 15:38 13601、"#"用来标识Velocity的脚本语 ... -
学习Spring之九:AOP in Spring
2011-03-15 22:27 781Spring IoC和 Spring AOP组合,一起形成了S ... -
web缓存服务器
2011-01-28 11:25 1241什么是web缓存服务器 无论企业有多大,Web缓存都有助于优 ... -
JEECMS3.0.2资料
2011-01-28 09:17 864http://jeecms.iteye.com/blog/85 ... -
PDFTable表格生成PDF
2010-06-02 09:28 2686package com.xishui.action; ... -
itext学习之表格pdftable (转载)
2010-06-02 09:26 1524一个最基本的PdfPTable的例子 package ...
相关推荐
java 通过dom4j操作 xml,含范例和源码
用dom 和 sax 读XML文件,简单明了
用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)...
这是一个建立好了的工程,非常简易,大家可以看下
XMLDOM的相关知识,以及如何通过JavaScript XML DOM对象来读取XML文件的数据,并添加、修改、删除XML文件元素。同时,《JavaScript+DHTML语法与范例详解词典》还讲解AJAX技术的用法,AJAX的定义、语法、功能和执行...
模式和XML DR 名域机制本篇附有3 个实例第二篇 XML 与数据介绍DOM 进阶DOM 应 用实例包括投票系统留言本网址及短消息管理器SAX 进阶XML 与数据并提供了7 个 实例第三篇 XML 工业应用主要内容是WML 无线应用协议SMIL ...
dom4j,jdom生成和解析XML文档实例,使用基于事件的SAX解析XML文档实例,使用jquery,javascript动态的生成DOM实例,使用jquery,javascript解析ajax回传的XML文档实例,jquery,javascript的ajax技术使用实例,Xpath的...
第三部分(XML的实践),内容包括:创建XML文档,创建属于自己的DTD,内容与形式的结合——XSL,XML DOM技术,同步多媒体合成语言SMIL,ASP与XML的联合开发; 第四部分(XML高阶),内容包括:XML在数据库中的...
《XML 基础教程》系统地阐述了XML的基本概念和语法规则,介绍了如何用DTD与XML Schema来确保XML文档的有效性,讲述了使用CSS与XSL样式表来显示和转换XML文档的各个步骤,探讨了使用DSO与DOM访问XML文档的各种方法。...
第二篇XML与数据,介绍DOM进阶、DOM应用实例(包括投票系统、留言本、网址及短消息管理器)、SAX进阶、XML与数据。并提供了7个实例;第三篇XML工业应用,主要内容是WML(无线应用协议)、SML(同步多媒体集成语言)、XML与...
好了,通过第三章的学习,我们已经了解了一些XML和DTD的基本术语,但是我们还不知道怎样来写这些文件,需要遵循什么样的语法,在下一章,将重点介绍有关撰写XML和DTD文档的语法。 第四章 XML语法 七.DTD的语法...
资源名称:XML编程从入门到精通内容简介:这是一本通过12个典型范例介绍XML编程从入门到精通的专著。 全书由3篇,12章组成,主要内容包括:第一篇XML提高,介绍数据建模、DTD模式、XML模式和XML DR、名域机制。本篇...
这四章对于读者开始XML应用程序的编程来说已经足够了。当你读完它们之后,你将理解XML是什么,如何筹划它的结构,如何用代码操作XML文档。虽然XML技巧资源已经相当丰富,但你仍需要首先打好坚实的基础。所以关键的...
第三部分(XML的实践),内容包括:创建XML文档,创建属于自己的DTD,内容与形式的结合——XSL,XML DOM技术,同步多媒体合成语言SMIL,ASP与XML的联合开发; 第四部分(XML高阶),内容包括:XML在数据库中的应用,XML...
全书由12章构成,内容包括.NET平台的建立、ASP.NET的Web Forms、控件、数据访问、Web Service、ASP.NET的设置和跟踪、ASP.NET的安全、ASP.NET的缓冲机制等技术,对于XML,书中则详细地介绍了XML的语法与应用...