- 浏览: 173426 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
solr 下拉提示功能 -
Java_大猫:
tinguo002 写道配置相对地址的时候 老出错,在这里找到 ...
solr4.1集成配置 -
tinguo002:
配置相对地址的时候 老出错,在这里找到答案了,只是为什么 ,这 ...
solr4.1集成配置 -
tinguo002:
太感谢了~ <env-entry-value>.. ...
solr4.1集成配置 -
gwgyk:
Java_大猫 写道gwgyk 写道不写velocity.pr ...
velocity.properties配置说明 【转】
Loading XML Data
以下代码从File中或一个URL中读取一个XML文件,并产生一个Document对象。一个Document对象表示了内存中的一棵XML树,可以在这个XML树中进行遍历、查询、修改等操作。
QName and Namespace
QName对象表示了一个XML元素或属性的qualified name,即一个namespace和一个local name的二元组。
Namespace对象表示了QName二元组中的namespace部分,它由prefix和URI两部分组成。
可以调用Namespace(String prefix, String uri)构造方法构造一个新的Namespace对象;也可以调用Namespace.get(String prefix, String uri)静态方法获得一个新的Namespace对象。
可以调用QName(String name)构造方法构造一个没有 namespace的qualified name;或者调用QName(String name, Namespace namespace)构造方法构造一个有namespace的qualified name。
Navigating Through an XML Tree
对Document对象调用getRootElement()方法可以返回代表根节点的Element对象。拥有了一个Element对象后,可以对该对象调用elementIterator()方法获得它的子节点的Element对象们的一个iterator。使用(Element)iterator.next()方法遍历一个iterator并把每个取出的元素转化为Element类型。
通过递归的方法,以下代码可以根据Document对象打印出完整的XML树。
Dom4j通过XMLWriter将由Document对象表示的XML树写入一个文件,并使用OutputFormat格式对象指定写入的风格和编码方法。调用OutputFormat.createPrettyPrint()方法可以获得一个默认的 pretty print风格的格式对象。对OutputFormat对象调用setEncoding()方法可以指定XML文件的编码方法。
Creating an XML Tree
使用DocumentFactory对象创建一个空的Document对象。DocumentFactory对象由DocumentFactory.getInstance()静态方法产生。对Document对象调用addElement()方法将创建XML根节点,并将该节点返回。也可以手工创建一个Element对象并调用Document.setRootElement()方法把它设置为根节点
Adding Information into an Element
Element通过addElement()为自己增加一个子节点到当前所有子节点的后面。该方法可以接受三种不同类型的参数:(QName qname)、(String name)或者(String qualifiedName, String namespaceURI)。该方法返回增加的子节点的Element对象。
Element通过addAttribute()为自己增加属性。该方法可以接受两种不同类型的参数:(QName qname, String value)或者(String name, String value)。该方法返回自身的Element对象。
Element通过addText()为自己增加文本内容。该方法只接受String类型参数,并返回自身的Element对象。
Deleting Elements and Attributes
要删除XML树上的一棵子树,首先要找到该子树的根节点,然后对该节点调用detach()方法。注意:如果对根节点调用了detach()方法,将导致该XML树不再完整(一个 XML文件需要有且仅有一个根节点)。
public void deleteSubtree(Element subtreeRoot) {
subtreeRoot.detach();
return;
}
要清除Element下的所有子节点(包括Element和text),可以对该Element调用clearContent()方法。该方法不会清除Element的属性。
要清除Element下的某个Attribute,首先要获得该Attribute对象,然后把它作为参数调用Element的remove()方法。
Updating an Attribute
要更新一个属性的内容,首先要获得该Attribute对象,然后可以调用setNamespace()方法更新它所属的namespace;调用setValue()方法更新它的属性值。
Updating an Element's Text
可以对一个Element对象调用isTextOnly()方法判断它是否只含有text或者是空节点。对Element对象调用addText()方法将把一个字符串附加到Element中,但不会修改它原来拥有的text或者子节点。如果Element是isTextOnly(),要修改原来含有的text,可以先调用clearContent(),再调用addText()并把新值传入。
以下代码从File中或一个URL中读取一个XML文件,并产生一个Document对象。一个Document对象表示了内存中的一棵XML树,可以在这个XML树中进行遍历、查询、修改等操作。
import java.io.*; import java.net.*; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; public class XMLLoader { private Document doc = null; public void parseWithSAX(File file) throws MalformedURLException, DocumentException { SAXReader xmlReader = new SAXReader(); this.doc = xmlReader.read(file); return; } public void parseWithSAX(URL url) throws MalformedURLException, DocumentException { SAXReader xmlReader = new SAXReader(); this.doc = xmlReader.read(url); return; } }
QName and Namespace
QName对象表示了一个XML元素或属性的qualified name,即一个namespace和一个local name的二元组。
Namespace对象表示了QName二元组中的namespace部分,它由prefix和URI两部分组成。
/******************** SAMPLE XML FILE ************************* <heavyz:Sample xmlns:heavyz="http://www.heavyzheng.com/schema/sample.xsd"> <heavyz:HelloWorld/> </heavyz:Sample> *************************************************************/ public void printRootQNameInfo(Document doc) { Element root = doc.getRootElement(); QName qname = root.getQName(); System.out.println("local name : " + qname.getName()); System.out.println("namespace prefix: " + qname.getNamespacePrefix()); System.out.println("namespace URI : " + qname.getNamespaceURI()); System.out.println("qualified name : " + qname.getQualifiedName()); return; } /************************* OUTPUT ***************************** localname : Sample namespace prefix: heavyz namespace URI : http://www.heavyzheng.com/schema/sample.xsd qualified name : heavyz:Sample *************************************************************/
可以调用Namespace(String prefix, String uri)构造方法构造一个新的Namespace对象;也可以调用Namespace.get(String prefix, String uri)静态方法获得一个新的Namespace对象。
可以调用QName(String name)构造方法构造一个没有 namespace的qualified name;或者调用QName(String name, Namespace namespace)构造方法构造一个有namespace的qualified name。
Navigating Through an XML Tree
对Document对象调用getRootElement()方法可以返回代表根节点的Element对象。拥有了一个Element对象后,可以对该对象调用elementIterator()方法获得它的子节点的Element对象们的一个iterator。使用(Element)iterator.next()方法遍历一个iterator并把每个取出的元素转化为Element类型。
通过递归的方法,以下代码可以根据Document对象打印出完整的XML树。
public void printXMLTree(Document doc) { Element root = doc.getRootElement(); printElement(root,0); return; } private void printElement(Element element, int level) { // print indent for (int i=0; i<level; i++) { System.out.print(" "); } System.out.println(element.getQualifiedName()); Iterator iter = element.elementIterator(); while (iter.hasNext()) { Element sub = (Element)iter.next(); printElement(sub,level+2); } return; }
Getting Information from an Element 可以通过Element类提供的方法访问一个XML元素中含有的信息: Method Comment getQName() 元素的QName对象 getNamespace() 元素所属的Namespace对象 getNamespacePrefix() 元素所属的Namespace对象的prefix getNamespaceURI() 元素所属的Namespace对象的URI getName() 元素的local name getQualifiedName() 元素的qualified name getText() 元素所含有的text内容,如果内容为空则返回一个空字符串而不是null getTextTrim() 元素所含有的text内容,其中连续的空格被转化为单个空格,该方法不会返回null attributeIterator() 元素属性的iterator,其中每个元素都是Attribute对象 attributeValue() 元素的某个指定属性所含的值 elementIterator() 元素的子元素的iterator,其中每个元素都是Element对象 element() 元素的某个指定(qualified name或者local name)的子元素 elementText() 元素的某个指定(qualified name或者local name)的子元素中的text信息 getParent 元素的父元素 getPath() 元素的XPath表达式,其中父元素的qualified name和子元素的qualified name之间使用"/"分隔 isTextOnly() 是否该元素只含有text或是空元素 isRootElement() 是否该元素是XML树的根节点 要取出Element对象中某个属性的信息,可以调用attributeIterator()方法获得一个Attribute对象的iterator,然后再遍历它。也可以直接调用attributeValue()方法获得指定属性的值。该方法接受四种类型的参数: * attributeValue(QName qname):通过指定qualified name获得属性值,如果无法找到指定的属性,则返回null。 * attributeValue(QName qname, String defaultValue):通过指定qualified name获得属性值,如果无法找到指定的属性,则返回defaultValue。 * attributeValue(String name):通过指定local name获得属性值,而忽略属性的namespace,如果无法找到指定的属性,则返回null。 * attributeValue(String name, String defaultValue):通过指定local name获得属性值,而忽略属性的namespace,如果无法找到指定的属性,则返回defaultValue。 对于一个Attribute对象,可以使用它的以下方法访问其中的信息: Method Comment getQName() 属性的QName对象 getNamespace() 属性所属的Namespace对象 getNamespacePrefix() 属性所属的Namespace对象的prefix getNamespaceURI() 属性所属的Namespace对象的URI getName() 属性的local name getQualifiedName() 属性的qualified name getValue() 属性的值 Writing an XML Tree to OutputStream
Dom4j通过XMLWriter将由Document对象表示的XML树写入一个文件,并使用OutputFormat格式对象指定写入的风格和编码方法。调用OutputFormat.createPrettyPrint()方法可以获得一个默认的 pretty print风格的格式对象。对OutputFormat对象调用setEncoding()方法可以指定XML文件的编码方法。
public void writeTo(OutputStream out, String encoding) throws UnsupportedEncodingException, IOException { OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("gb2312"); XMLWriter writer = new XMLWriter(System.out,format); writer.write(doc); writer.flush(); return; }
Creating an XML Tree
使用DocumentFactory对象创建一个空的Document对象。DocumentFactory对象由DocumentFactory.getInstance()静态方法产生。对Document对象调用addElement()方法将创建XML根节点,并将该节点返回。也可以手工创建一个Element对象并调用Document.setRootElement()方法把它设置为根节点
import org.dom4j.DocumentFactory; import org.dom4j.Document; import org.dom4j.Element; public class XMLSaver { private DocumentFactory factory = null; private Document doc = null; private Element root = null; public XMLSaver() { factory = DocumentFactory.getInstance(); doc = factory.createDocument(); } public Element generateRoot(String name) { root = doc.addElement(name); return root; } public Element generateRoot(QName qname) { root = doc.addElement(qname); return root; } public Element generateRoot(Element element) { doc.setRootElement(element); root = element; return root; } }
Adding Information into an Element
Element通过addElement()为自己增加一个子节点到当前所有子节点的后面。该方法可以接受三种不同类型的参数:(QName qname)、(String name)或者(String qualifiedName, String namespaceURI)。该方法返回增加的子节点的Element对象。
Element通过addAttribute()为自己增加属性。该方法可以接受两种不同类型的参数:(QName qname, String value)或者(String name, String value)。该方法返回自身的Element对象。
Element通过addText()为自己增加文本内容。该方法只接受String类型参数,并返回自身的Element对象。
public void addAuthors(Element bookElement) { Element author1 = bookElement.addElement("author"); author1.addAttribute("name","Toby"); author1.addAttribute("location","Germany"); author1.addText("Tobias Rademacher"); Element author2 = bookElement.addElement("author"); author2.addAttribute("name","James"); author2.addAttribute("name","UK"); author2.addText("James Strachan"); return; }
Deleting Elements and Attributes
要删除XML树上的一棵子树,首先要找到该子树的根节点,然后对该节点调用detach()方法。注意:如果对根节点调用了detach()方法,将导致该XML树不再完整(一个 XML文件需要有且仅有一个根节点)。
public void deleteSubtree(Element subtreeRoot) {
subtreeRoot.detach();
return;
}
要清除Element下的所有子节点(包括Element和text),可以对该Element调用clearContent()方法。该方法不会清除Element的属性。
要清除Element下的某个Attribute,首先要获得该Attribute对象,然后把它作为参数调用Element的remove()方法。
Updating an Attribute
要更新一个属性的内容,首先要获得该Attribute对象,然后可以调用setNamespace()方法更新它所属的namespace;调用setValue()方法更新它的属性值。
Updating an Element's Text
可以对一个Element对象调用isTextOnly()方法判断它是否只含有text或者是空节点。对Element对象调用addText()方法将把一个字符串附加到Element中,但不会修改它原来拥有的text或者子节点。如果Element是isTextOnly(),要修改原来含有的text,可以先调用clearContent(),再调用addText()并把新值传入。
public void updateText(Element element, String newText) { if (element.isTextOnly()) { element.clearContent(); element.addText(newText); } return; }
发表评论
-
httpclient4 网页抓取
2013-04-25 18:29 1334最近在做全文检索。所以数据很纠结。没办法 抓一些行业新闻。于是 ... -
日期累加
2012-03-27 22:23 1227和所有的新人一起分享: public static voi ... -
文件下载
2012-03-26 12:48 986public void publicDownFileCo ... -
JXL取日期时yy-mm-dd 转成yyyy-mm-dd
2012-03-20 20:40 1320private static String getCellT ... -
commons-fileupload 小结
2012-01-04 11:38 1226最近写上传文件,用到了这个东西,我想很多人对这个并不陌生。 下 ... -
java 小方法积累
2011-08-15 16:04 1221public static void main(String ... -
jxl导入excel
2011-08-02 11:29 1272昨天做一个 excel 导入。由于此部分用的是JXL 所以 记 ... -
chart图之open flash chart2
2011-06-28 17:37 4248刚在前一个文章里写了 ... -
chart图之jfreechart
2011-06-28 17:23 1508前不久了解了下有关chart图方面的,首先对于JAVA的来说, ... -
map 转 二维数组
2011-06-20 17:22 5577在一个国外的站点无意间发现的 觉得挺有用 留着了 Map< ... -
jxl读excel模板
2011-05-11 10:53 2498os = response.getOutputStream( ... -
jxl例子2--转
2011-05-05 23:06 967package com.jxl; import java ... -
jxl例子
2011-05-05 23:05 1095public class ExcelReport { pu ... -
参考1
2011-04-08 16:20 0http://blog.transnal.com/blog-b ... -
SAX 解析XML
2011-04-08 16:19 1028学习时的练习代码贴出来给初学者一起分享下:具体不解释 pack ... -
基于DOM XML学习笔记
2011-04-07 14:35 962关于XML我就不多介绍了。这里只是介绍下小弟学习DOM解析XM ... -
【转】Java与XML联合编程之DOM篇
2011-04-07 14:12 906DOM初步 DOM是Document ... -
【转】java反射
2011-03-28 11:33 767Java Reflection (JAVA反射) 作者 ... -
java固定流水号生成
2010-09-28 23:09 8230发一个流水号的想DEMO。大家可以学习下。有好的东西当然要分享 ... -
【转帖】java权限。。。
2010-03-28 23:53 1749这里笔者介绍一种很常用,也比较专业的权限控制思路。这里用jav ...
相关推荐
JavaEE源代码 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.6.1JavaEE源代码 dom4j-1.6.1JavaEE源...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、修改和查询变得简单。这次我们有两个版本的DOM4J库:1.6.1和2.0.0-ALPHA。这两个版本在功能、性能和API设计上都有所...
另一份重要的资源是"dom4j-2.1.3-sources.jar",它提供了DOM4J库的源代码,允许开发者深入研究DOM4J的内部实现,对于理解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文档-...
《dom4j-1.6.1.jar:Java XML处理的得力助手》 在Java开发中,XML(eXtensible Markup Language)是数据交换和文档存储的常见格式,而dom4j-1.6.1.jar是针对Java平台的一个强大的、灵活的XML处理库。这个库提供了对...
这里的"dom4j-2.1.0.jar"是DOM4J库的二进制版本,而"dom4j-2.1.0-javadoc.jar"则是该库的API文档,用于帮助开发者理解和使用DOM4J的各种接口和类。 DOM4J的核心功能包括: 1. **XML解析**:DOM4J支持多种解析方式...
**DOM4J-1.6.1完整jar包** DOM4J是一个强大的Java库,用于处理XML、XPath和XSLT。它是一个灵活的、高性能的开源库,为XML解析和操作提供了丰富的功能。DOM4J 1.6.1是这个库的一个稳定版本,包含了对XML文档的创建、...
《深入解析DOM4J——基于Java的XML处理框架》 DOM4J,作为一个强大的Java XML API,是处理XML文档的主流工具之一。它提供了一套简单而高效的方式来操作XML文档,包括读取、写入、修改和遍历XML结构。在Java开发中,...
四、DOM4J与其他XML库的比较 DOM4J与JDOM、XOM等其他XML处理库相比,其优势在于功能全面、性能优秀和广泛的社区支持。虽然Java标准库中的JAXB和DOM API提供了XML处理的基础功能,但DOM4J因其简洁的API和强大的功能...
在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...
dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件。 dom4j-2.1.3 XML Document Object Model based on Java ...
《dom4j-1.6.1.jar与ojdbc14_g.jar:解析与应用》 在Java开发中,库文件扮演着至关重要的角色,它们提供了丰富的功能,帮助开发者节省时间和精力,专注于业务逻辑的实现。本文将详细介绍两个重要的Java库——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文档-...
dom4j-1.6.1-sources 源码
dom4j-1.6.1.jar下载
dom4j-2.0.3 jar包+javadoc包+sources包 dom4j-2.0.3 XML Document Object Model based on Java Collections Framework Java 5+ Generics support Released on April 11, 2020 从这个网址https://dom4j.github.io/...
**dom4j -1.6.1 源码解析** **一、dom4j简介** dom4j是一个开源的Java XML API,它提供了一种高效、灵活的方式来处理XML文档。dom4j的设计目标是简单易用,同时又具有强大的功能,支持XPath查询、XML Schema验证、...
DOM4J-1.6.1.jar 和 XMLBeans-2.6.0.jar 是两个在Java开发中处理XML文档的库。它们各自提供了不同的方法来解析、操作和生成XML数据,尤其是在进行Excel导入导出这样的任务时,可能需要对XML进行复杂的操作。 DOM4J...