- 浏览: 466171 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuan_bin1990:
您好,请问下demo如何运行啊,准备研究研究,但不知道入口啊。 ...
ssh2(struts2+spring2.5+hibernate3.3)自动生成代码程序 -
luyulong:
[b][/b][i][/i][ ...
jQuery进度条插件 jQuery progressBar -
txin0814:
mark..
读取文件目录 -
vurses:
[align=center][color=red][size= ...
include 与 jsp:include区别 -
Roshan2:
http://lijiejava.iteye.com/blog ...
Spring AOP 入门实例
一、例子
- public class XMLUtils {
- /**
- * 生成xml文件
- * @param doc
- * @param fileName
- * @param encoding
- */
- public static void createXMLFile(Document doc,String fileName,String encoding){
- XMLWriter writer = null;
- try{
- if(StringUtils.isNotEmpty(encoding)){
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding(encoding); // 指定XML编码
- writer = new XMLWriter(new FileWriter(fileName),format);
- }else{
- writer = new XMLWriter(new FileWriter(fileName));
- }
- writer.write(doc);
- }catch(IOException e){
- e.printStackTrace();
- }finally{
- try{
- writer.close();
- }catch(IOException e){
- e.printStackTrace();
- }
- }
- }
- /**
- * 创建Document并返回根结点
- * @param root_label 根标签
- * @return
- */
- public static Document createDocument(String root_label){
- Document doc = DocumentHelper.createDocument();
- doc.setRootElement(doc.addElement(root_label));
- return doc;
- }
- /**
- * 将字符串转化为XML
- * @param xml_string
- * @return
- */
- public static Document createDocumentFromXmlString(String xml_string){
- if(StringUtils.isEmpty(xml_string)){
- xml_string = "<students> <class>test</class> </students>";
- }
- Document document = null;
- try {
- document = DocumentHelper.parseText(xml_string);
- } catch (DocumentException e) {
- e.printStackTrace();
- }
- return document;
- }
- /**
- * 给结点加子结点
- * @param root 相对根
- * @param newNode 新结点
- * @param nodeId 结点Id
- * @param elements 结点元素
- */
- public static void addNodeElement(Element root,String newNode,String nodeId,Map elements){
- Element _newNode = root.addElement(newNode);
- _newNode.addAttribute("id", nodeId).addAttribute("no", nodeId);//设置属性
- Iterator it = elements.entrySet().iterator();
- while(it.hasNext()){//结点下的元素与值
- Map.Entry entry = (Map.Entry)it.next();
- Object key = entry.getKey();
- Object value = entry.getValue();
- _newNode.addElement((String)key).setText((String)value);
- }
- }
- /**
- * 将文档或节点的XML转化为字符串
- * @param filePath
- * @return
- */
- public static String readXMLAsString(String filePath){
- SAXReader reader = new SAXReader();
- Document document=null;
- try {
- document = reader.read(new File(filePath));
- //Element root=document.getRootElement();
- } catch (DocumentException e) {
- e.printStackTrace();
- }
- return document.asXML();
- }
- /**
- * 打印节点的所有子节点
- * @param element
- */
- public static void printAllChildNode(Element element){
- //循环当前节点属性
- Iterator attrs = element.attributeIterator();
- while(attrs.hasNext()){
- Attribute attr = (Attribute)attrs.next();
- System.out.println(attr.getName() + "=" + attr.getText());
- }
- //循环其孩子元素节点
- Iterator elements = element.elementIterator();
- while(elements.hasNext()){
- Element ele = (Element)elements.next();
- if(ele.attribute("id") == null){
- System.out.println(ele.getName() + "=" + ele.getText());
- }
- //递归调用
- printAllChildNode(ele);
- }
- }
- /***
- * 以xpath读取数据
- * @param filePath
- * @param xpath
- */
- public static void printElementsByXPath(String filePath,String xpath){
- SAXReader reader = new SAXReader();
- try{
- Document doc = reader.read(new File(filePath));
- List properties=doc.selectNodes(xpath);
- Iterator it=properties.iterator();
- while(it.hasNext()){
- Element elm=(Element)it.next();
- System.out.println(elm.getText());
- }
- }
- catch(Exception ex){
- ex.printStackTrace();
- }
- }
- public static void main(String[] args){
- Map<String,String> elements = new HashMap<String,String>();
- elements.put("name", "张三");
- elements.put("sex", "男");
- elements.put("age", "20");
- Document doc = XMLUtils.createDocumentFromXmlString("<students></students>");
- doc.getRootElement().addAttribute("year", "2000");
- XMLUtils.addNodeElement(doc.getRootElement(), "student", "20090313001", elements);
- elements.clear();
- elements.put("name", "李四");
- elements.put("sex", "男");
- elements.put("age", "21");
- XMLUtils.addNodeElement(doc.getRootElement(), "student", "20090313002", elements);
- String filePath = "D:/test.xml";
- XMLUtils.createXMLFile(doc, filePath, "GBK");
- //System.out.println(XMLUtils.readXMLAsString(filePath));
- XMLUtils.printElementsByXPath(filePath, "/students/student[@id=\"20090313001\"]/name");
- XMLUtils.printAllChildNode(doc.getRootElement());
- }
- }
public class XMLUtils { /** * 生成xml文件 * @param doc * @param fileName * @param encoding */ public static void createXMLFile(Document doc,String fileName,String encoding){ XMLWriter writer = null; try{ if(StringUtils.isNotEmpty(encoding)){ OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(encoding); // 指定XML编码 writer = new XMLWriter(new FileWriter(fileName),format); }else{ writer = new XMLWriter(new FileWriter(fileName)); } writer.write(doc); }catch(IOException e){ e.printStackTrace(); }finally{ try{ writer.close(); }catch(IOException e){ e.printStackTrace(); } } } /** * 创建Document并返回根结点 * @param root_label 根标签 * @return */ public static Document createDocument(String root_label){ Document doc = DocumentHelper.createDocument(); doc.setRootElement(doc.addElement(root_label)); return doc; } /** * 将字符串转化为XML * @param xml_string * @return */ public static Document createDocumentFromXmlString(String xml_string){ if(StringUtils.isEmpty(xml_string)){ xml_string = "<students> <class>test</class> </students>"; } Document document = null; try { document = DocumentHelper.parseText(xml_string); } catch (DocumentException e) { e.printStackTrace(); } return document; } /** * 给结点加子结点 * @param root 相对根 * @param newNode 新结点 * @param nodeId 结点Id * @param elements 结点元素 */ public static void addNodeElement(Element root,String newNode,String nodeId,Map elements){ Element _newNode = root.addElement(newNode); _newNode.addAttribute("id", nodeId).addAttribute("no", nodeId);//设置属性 Iterator it = elements.entrySet().iterator(); while(it.hasNext()){//结点下的元素与值 Map.Entry entry = (Map.Entry)it.next(); Object key = entry.getKey(); Object value = entry.getValue(); _newNode.addElement((String)key).setText((String)value); } } /** * 将文档或节点的XML转化为字符串 * @param filePath * @return */ public static String readXMLAsString(String filePath){ SAXReader reader = new SAXReader(); Document document=null; try { document = reader.read(new File(filePath)); //Element root=document.getRootElement(); } catch (DocumentException e) { e.printStackTrace(); } return document.asXML(); } /** * 打印节点的所有子节点 * @param element */ public static void printAllChildNode(Element element){ //循环当前节点属性 Iterator attrs = element.attributeIterator(); while(attrs.hasNext()){ Attribute attr = (Attribute)attrs.next(); System.out.println(attr.getName() + "=" + attr.getText()); } //循环其孩子元素节点 Iterator elements = element.elementIterator(); while(elements.hasNext()){ Element ele = (Element)elements.next(); if(ele.attribute("id") == null){ System.out.println(ele.getName() + "=" + ele.getText()); } //递归调用 printAllChildNode(ele); } } /*** * 以xpath读取数据 * @param filePath * @param xpath */ public static void printElementsByXPath(String filePath,String xpath){ SAXReader reader = new SAXReader(); try{ Document doc = reader.read(new File(filePath)); List properties=doc.selectNodes(xpath); Iterator it=properties.iterator(); while(it.hasNext()){ Element elm=(Element)it.next(); System.out.println(elm.getText()); } } catch(Exception ex){ ex.printStackTrace(); } } public static void main(String[] args){ Map<String,String> elements = new HashMap<String,String>(); elements.put("name", "张三"); elements.put("sex", "男"); elements.put("age", "20"); Document doc = XMLUtils.createDocumentFromXmlString("<students></students>"); doc.getRootElement().addAttribute("year", "2000"); XMLUtils.addNodeElement(doc.getRootElement(), "student", "20090313001", elements); elements.clear(); elements.put("name", "李四"); elements.put("sex", "男"); elements.put("age", "21"); XMLUtils.addNodeElement(doc.getRootElement(), "student", "20090313002", elements); String filePath = "D:/test.xml"; XMLUtils.createXMLFile(doc, filePath, "GBK"); //System.out.println(XMLUtils.readXMLAsString(filePath)); XMLUtils.printElementsByXPath(filePath, "/students/student[@id=\"20090313001\"]/name"); XMLUtils.printAllChildNode(doc.getRootElement()); } }
二、使用XPATH
<AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </AAA>
(1)如果它是以斜线“/”开始,它是描述请求元素的绝对路径。
范例结构:
- 访问元素“AAA”---- “/AAA” 。
- 访问元素“CCC” --- “/AAA/CCC”,访问根目录AAA下面的子节点CCC,本例会得到两个节点的集合。
- 访问根节点AAA的子节点DDD的子节点BBB:“/AAA/DDD/BBB”。
(2)如果路径表达式以“//”开始,它会查找所有符合规则的元素
范例结构:
- “//BBB”,选择所有的元素<BBB/>,本例中共有四处
- “//DDD/BBB”,选择元素节点“DDD”下的子节点“BBB”,只要满足元素“BBB”为“DDD”的子元素,就会被选择,本例一处。
(3)“*”选择所有由前面路径定位的元素
范例:
- “/AAA/*”表示选择根节点下所有的元素
- “/*/CCC”选择有一个父元素的“CCC”元素,“/*/*/BBB”选择第三级的根节点下的所有的“BBB”元素
- “//*”表示匹配所有的元素
(4)在方括号中的表达式可以进一步的指定元素,方括号中的数字表示被选择元素集合的位置,last()函数表示被选择元素集的最后一个元素
- “/AAA/BBB[2]” 表示根节点下“BBB”元素集合的第二个元素
- “/AAA/BBB[last()]” 表示根节点下“BBB”元素集合的最后一个元素
(5)“@”表示属性
<AAA> <BBB id = "b1"/> <BBB id = "b2"/> <BBB name = "bbb"/> <BBB/> </AAA>
- “//@id”表示所有的名为“id”属性
- “//BBB[@id]”表示所有含有ID属性的BBB元素
- “//BBB[@*]”表示含有属性的所有的BBB元素,本例中的<BBB/>不会被选择,其它三个被选中
- “//BBB[not(@*)]”表示没有属性的元素,本例中<BBB/>被选中,其它的三个元素不被选择
(6)属性的值可以做为选择标准,函数“normalize-space”可以移掉头部和尾部的空格,或者用单个的空格替换
<AAA> <BBB id = "b1"/> <BBB name = " bbb "/> <BBB name = "bbb"/> </AAA>
- “//BBB[@id=’b1’]”:选择属性值为“b1”的元素“BBB”
- “//BBB[@name=’bbb’]”:选择属性值为“bbb”的元素,注意由于每一个属性名为name的元素“BBB”,其值有空格,不会被选择。
- “//BBB[normalize-space(@name)='bbb']”:选择名称为“name”的,其值为“bbb”,值前后可以有空格,本例则会选择两个“BBB”元素
(7)函数count(*):计算选择元素的个数
- “//*[count(BBB)=2]”,选中含两个“BBB”子元素的元素
- “//*[count(*)=2]”,选中含有两个子元素的元素
- dom4j-1.6.1.jar (306.5 KB)
- 下载次数: 2
发表评论
-
javascript 打印指定区域
2010-11-18 16:34 1582javascript网页html 打印指定区域在一张网页里面, ... -
MyEclipse 8.5 开发环境配置,汉化,Aptana2.0插件,SVN 插件,Flex Builder 3/4 插件安装
2010-10-26 14:27 1544MyEclipse 8.5 开发环境配置,汉化,Aptana2 ... -
java读取properties文件
2010-10-11 13:43 763使用J2SE API读取Properties文件的六种方法 1 ... -
dbcp基本配置和重连配置
2010-09-28 09:29 2660最近在看一些dbcp的相 ... -
JAVA实现文件转移
2010-09-28 09:26 944/** * //1.从旧文件拷贝内容到新文件 ... -
Properties读取类
2010-09-25 14:06 946package cn.feigme.util; ... -
JAVA读写ftp
2010-09-21 16:41 3538import java.io.DataInputStream; ... -
apache tomcat mysql负载均衡和集群
2010-09-14 10:30 1689前言:公司开发了一个网站,估计最高在线人数是3万,并发人数最多 ... -
Flash Builder 4 正式版序列号
2010-09-01 15:51 3974江湖上又出现新的FlashBuilder(Flex4)序列号: ... -
利用 org.apache.commons.io.FileUtils快速读写文件
2010-08-17 10:33 2723利用 org.apache.commons.io.FileUt ... -
netbeans常用快捷键
2010-08-10 16:26 9061、Application应用程序的 ... -
ERWIN7.1注册码
2010-06-23 12:15 1358终于找到ERWIN7.1注册码,也可在ERWIN7.2上注册。 ... -
Java压缩文件zip
2010-06-21 09:42 1136可以使用jdk提供的java.util.zip包的类来进行文件 ... -
文件资源操作
2010-06-16 21:52 10841.访问文件资源 假设有一个文件地位于 ... -
Java Regex To Use
2010-06-16 21:46 805Java代码 /** * 得到 ... -
Java Random and Java Disabuse
2010-06-16 21:46 1122一、Random 1、创建Random ... -
java 线程池
2010-06-16 21:44 11521)threadpool.xml Java代码 ... -
使用ThreadLocal,隔离多个线程之间的共享冲突
2010-06-16 21:29 1540早在Java 1.2推出之时,Java平台中就引入了一个新的 ... -
MyEclipse下开发Web Service
2010-06-16 21:28 1524开发环境 Sun Java 5+ ... -
jexcel使用
2010-06-16 21:23 1454Java代码 package excel.jx ...
相关推荐
要使用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是一个非常强大的Java库,专门用于处理XML文档。它提供了丰富的API,使得XML的读取、创建、修改和解析变得简单易行。相较于JDOM,DOM4J确实提供了更多的功能,虽然在学习曲线方面...
Dom4j解析教程。详细讲解如何使用dom4j解析xml,简单易懂。
DOM4J的核心优势之一在于其丰富的接口体系,这些接口定义在`org.dom4j`包内,提供了对XML文档进行读写、查询、修改等操作的能力。 1. **Attribute**: 代表XML中的属性,可用于获取和设置属性值。 2. **Branch**: ...
在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除元素以及获取元素节点。 1. **添加元素节点** 在DOM4J中,添加元素节点通常涉及创建一个新的`Element`对象,然后将其...
### Dom4J生成XML的完整方法详解 在Java开发领域,处理XML文档是常见的需求之一。Dom4J作为一款优秀的Java XML API,...掌握以上知识点,开发者即可熟练运用Dom4J生成复杂的XML文档,满足项目中对XML数据处理的需求。
在提供的压缩包中,可能包含了dom4j的jar文件,解压后将其引入项目,就可以开始使用DOM4J进行XML操作了。 DOM4J不仅提供了基本的XML操作,还支持命名空间、事件处理、DTD和XML Schema验证等功能,是Java开发中处理...
### 使用dom4j读写XML文档的关键知识点 #### 一、简介与安装 - **DOM4J** 是一款用于处理XML文档的Java库,它提供了简单且强大的API来解析、创建、修改XML文档。 - 官方网站:[http://www.dom4j.org/]...
6. **Namespace支持**:DOM4J提供了对XML命名空间的全面支持,可以方便地处理包含命名空间的XML文档。 7. **DocumentType支持**:对于包含DOCTYPE声明的XML文档,DOM4J可以处理这些声明,并提供对应的DocumentType...
在提供的视频资源"17-dom4j解析xml文档(增删改查).avi"中,可能详细展示了这些操作的步骤和示例,观看该视频将进一步加深你对DOM4J操作XML的理解。记得实践是检验理论的最好方式,动手操作会让你更好地掌握这些知识...
例子比较简单”的描述中,我们可以推断出这个压缩包包含了一些关于如何使用DOM4J进行XML读写的基本示例。以下是对这些关键知识点的详细解释: 1. **XML解析**:DOM4J支持两种解析XML文档的方式:SAX(Simple API ...
本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解XSD的作用至关重要。XSD文件定义了XML文档的元素、属性、数据类型以及它们之间的关系。通过...
在提供的资源中,"dom4j读写XML及保存批量数据对象 - 五月天的博客 - ITeye技术网站.bmp"可能是一个教程页面的截图,它会详细解释这些操作的实现步骤。如果你遇到任何问题,可以参考这个截图或者在ITeye技术网站上...
### DOM4J解析XML知识点详解 ...通过结合使用DOM4J的基本类和XPath表达式,可以轻松地实现对XML文档的查询和修改。无论是对于开发人员还是对于那些需要频繁处理XML数据的应用程序来说,DOM4J都是一个非常有价值的工具。
1. **解析XML文件**:使用DOM4J的`DocumentHelper`类的`parseText()`或`parse()`方法,可以将XML文件加载为一个`Document`对象。例如: ```java Document document = DocumentHelper.parseText(xmlString); ``` ...
### 使用dom4j操作XML详解 #### 一、DOM4j简介与配置 **DOM4j** 是一款专为Java平台设计的开源XML解析处理工具。它的设计充分考虑了性能和易用性,同时提供了对DOM、SAX及JAXP等标准的支持,因此非常适合进行复杂...
在使用DOM4J时,通常还需要依赖其他库来增强其功能。例如,`jaxen-1.1.1.jar`是DOM4J的一个依赖,它提供了XPath引擎,使得DOM4J能够执行XPath查询。Jaxen可以与多种XML解析器(如DOM、DOM4J、JDOM等)协同工作,提供...
DOM4J的名字来源于“Document Object Model for Java”,它采用面向对象的设计思想,提供了对XML文档的全面支持。 DOM4J库的核心功能包括: 1. **解析XML**:DOM4J可以读取XML文件,将其转换为一个树形结构,即...
2.Java方面,使用dom4j对xml进行操作,包括节点的读取,添加,修改,删除。 3.Flex方面,使用DataGrid呈现数据;使用RemoteObject构建和Java的通信;使用到了验证控件Validator;使用了CSS样式对Alert对话框进行了...