- 浏览: 142323 次
- 性别:
- 来自: 北京
最新评论
-
笑傲郝:
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 907import java.net.*; pub ... -
Swing中可多选下拉框的简单实现
2011-07-08 11:00 8569实现可多选下拉框需要写三个类: MyComboBox ... -
我为什么选择 iBatis 而不是 Hibernate(对于正在选型的人的建议)
2011-07-07 15:10 956[注意]清在回复之前认真地看一下我的帖子,结合你的实际项目经验 ... -
选择Hibernate还是iBatis?
2011-07-07 15:05 1025选择Hibernate还是iBATIS都有它的道理: Hi ... -
通过 JAVA SWING 看透 MVC 设计模式[组图]
2011-07-05 12:42 1154一个好的用户界面(GUI) ... -
Swing MVC 结构
2011-07-05 10:03 1644MVC 是 Model-View-Controller 的简称 ... -
JTree放入JSplitPane范例
2011-07-02 14:58 1190范例1 import javax.swing.JFrame; ... -
STRUTS的struts--config.xml详解
2011-06-16 15:42 193301.<?xml version="1.0&q ... -
Proxool连接池实现
2011-06-16 11:13 960首先从 http://proxool.sourceforg ... -
<c:out value="${}"/>|JSTL标签|标签库和EL
2011-04-28 17:15 1305这是JSTL标签的用法 JST ... -
Spring MVC 入门
2011-04-15 14:07 846这篇文章将教你快速地上手使用 Spring 框架. 如果你 ... -
DispatcherServlet定义档
2011-04-15 10:11 1242DispatcherServlet预设使用servle ... -
JavaMail发送
2011-03-31 17:37 738public boolean sendMailWithPic( ... -
Velocity用法
2011-03-31 15:38 14261、"#"用来标识Velocity的脚本语 ... -
学习Spring之九:AOP in Spring
2011-03-15 22:27 822Spring IoC和 Spring AOP组合,一起形成了S ... -
web缓存服务器
2011-01-28 11:25 1275什么是web缓存服务器 无论企业有多大,Web缓存都有助于优 ... -
JEECMS3.0.2资料
2011-01-28 09:17 905http://jeecms.iteye.com/blog/85 ... -
PDFTable表格生成PDF
2010-06-02 09:28 2733package com.xishui.action; ... -
itext学习之表格pdftable (转载)
2010-06-02 09:26 1562一个最基本的PdfPTable的例子 package ...
相关推荐
【DOM解析XML】 在Java中,解析XML文档有多种方式,其中DOM(Document Object Model)和SAX(Simple API for XML)是最常见的两种。DOM是一种基于树形结构的XML处理方式,它将整个XML文档加载到内存中,形成一个完整...
处理XML文件时,我们通常会使用两种主要的方法:DOM(Document Object Model)和SAX(Simple API for XML)。本文将深入探讨这两种解析方式,并通过代码示例来阐述它们的工作原理。 DOM解析是将整个XML文档加载到...
本工程包“DOM SAX解析XML文档的范例”将帮助我们深入理解这两种解析方式。 **DOM解析:** DOM解析器将整个XML文档加载到内存中,创建一个树形结构,称为DOM树。每个XML元素、属性、文本节点等都有对应的DOM对象,...
**XML DOM 教程** XML(可扩展标记语言)是一种用于存储和传输数据的标准化格式,而DOM(文档对象模型)是W3C组织定义的一个接口,它为XML和HTML文档提供了一种结构化的表示方法,并允许编程语言如JavaScript与这些...
例如,Java中的JAXB(Java Architecture for XML Binding)用于对象与XML之间的绑定,DOM4J提供DOM接口的增强,而Python的xml.etree.ElementTree是内置的XML处理模块。这些类库简化了XML处理,使得开发者无需关注...
在《HTML+XHTML+CSS+JavaScript+DOM+AJAX语法及范例实用辞典》这本书的附赠光盘中,包含了从"chapter1"到"chapter5"的全部网站源码,为读者提供了丰富的学习资源。 1. **HTML(HyperText Markup Language)**:HTML...
HRESULT hr = CoCreateInstance(__uuidof(DOMDocument), NULL, CLSCTX_INPROC_SERVER, __uuidof(IXMLDOMDocument), (LPVOID*)&pDoc); if (FAILED(hr)) { // 错误处理... } BSTR bstrPath = SysAllocString(L"your_...
XMLDOM的相关知识,以及如何通过JavaScript XML DOM对象来读取XML文件的数据,并添加、修改、删除XML文件元素。同时,《JavaScript+DHTML语法与范例详解词典》还讲解AJAX技术的用法,AJAX的定义、语法、功能和执行...
本压缩包中的“C2的特效范例(XML格式)”提供了C2引擎专用的特效文件,这些文件采用XML格式,可以被C2引擎识别和执行,同时也能应用于基于JavaScript的网页游戏代码中。 XML(Extensible Markup Language)是一种...
总结来说,这个压缩包提供了一个全面的XML学习环境,涵盖了从基本的XML结构到DOM解析,再到XSLT转换的各个方面。通过这些实例,学习者可以深入理解XML的工作原理,以及如何利用XML进行数据管理和交换。对于初学者和...
4. **XML Schema**:与DTD相比,XML Schema提供了更强大的数据类型和更复杂的结构约束。它使用XSD(XML Schema Definition)文件来定义文档结构。 5. **命名空间(Namespaces)**:在XML中,命名空间可以防止元素...
- **范例VI**:演示如何加载XML文件、解析数据并显示结果的完整流程。 - **XML解析例程**:自定义的LabVIEW函数,可能是为了简化XML处理或增加特定功能。 - **文档**:解释如何使用提供的代码和资源,以及解析XML...
4. 使用DOM或SAX解析XML文件,并提取所需信息。 本教程的PPT课件将详细讲解这些知识点,源代码文件则提供了实践示例,帮助你加深理解并提升XML的应用能力。通过学习,你将能够熟练地运用XML进行数据的组织、存储和...
dom4j,jdom生成和解析XML文档实例,使用基于事件的SAX解析XML文档实例,使用jquery,javascript动态的生成DOM实例,使用jquery,javascript解析ajax回传的XML文档实例,jquery,javascript的ajax技术使用实例,Xpath的...
在本篇Qt编程范例之中高级篇(4)中,我们将深入探讨XML处理技术,这是在C++开发中,特别是使用Qt框架时一个非常重要的部分。XML(eXtensible Markup Language)是一种用于存储和传输数据的标准格式,因其灵活性和跨...
为了更好地练习XML,向服务器接收到参数后,均用DOM的方式存入XML,数据的读取均用Xpath读取。然后以XML文件的形式返回。以下均已用户注册为例,来说明数据的处理: 1. 用户点击注册按钮,就会把系统生成的ID和用户...
1. **XML基础**:了解XML的基本结构,包括元素、属性、文本内容、命名空间等,并学习如何使用DOM(Document Object Model)、SAX(Simple API for XML)和LINQ to XML等方法来解析和生成XML文档。 2. **XPath和XSLT...
第三部分(XML的实践),内容包括:创建XML文档,创建属于自己的DTD,内容与形式的结合——XSL,XML DOM技术,同步多媒体合成语言SMIL,ASP与XML的联合开发; 第四部分(XML高阶),内容包括:XML在数据库中的...
源代码部分则可能包含XML解析、DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等解析方式的示例。DOM将整个XML文档加载到内存,形成一棵可操作的节点树;SAX是事件驱动...