- 浏览: 1235415 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (242)
- java (58)
- netty (14)
- javascript (21)
- commons (13)
- 读书笔记 (5)
- java测试 (6)
- database (5)
- struts2 (8)
- hibernate (6)
- english (27)
- spring (10)
- 生活 (4)
- 多线程 (4)
- 正则表达式 (1)
- 杂项 (1)
- maven (4)
- 数据库 (10)
- 学习笔记 (1)
- mongodb (1)
- 百度bcs (4)
- 云推送javasdk (2)
- webservice (3)
- IllegalAnnotationException: Two classes have the same XML type name (0)
- drools (3)
- freemarker (3)
- tomcat (1)
- html5 (2)
- mq (11)
- fastjson (3)
- 小算法 (2)
最新评论
-
longxitian:
https://www.cnblogs.com/jeffen/ ...
万恶的Mybatis的EnumTypeHandler -
asialee:
ddnzero 写道博主请问FileUtils这个类是哪个包的 ...
使用mockftpserver进行ftp测试 -
ddnzero:
博主请问FileUtils这个类是哪个包的?还是自己的呢?能放 ...
使用mockftpserver进行ftp测试 -
yizishou:
为什么会intMap.get("bbb") ...
浅谈System.identityHashCode -
liguanqun811:
感觉LogManager打开了所有的LogSegment(文件 ...
jafka学习之LogManager
1. 在dom4j里,直接在root element上addNamespace是无法成功的,因为是默认的,所以prefix必须给空字符串,结果导致了root的直接子结点都产生了xmlns=""的属性
诸如:
<root xmlns="http://wangf.javaeedev.com"> <blog xmln=""> <aticles>...</aticles> </blog> <forum xmlns=""> <topics>...</topics> </forum> </root>这个可以通过在构造rootElement的时候指定,具体为什么,我想什么时候看看源码???
Element root = maindoc.addElement("root", "http://asialee.javaeeye.com")
2. XSD文件的解析,本来XSD应该是一个特殊的XML,它应该是可以通过XML的方式进行解析的,但是是有问题的.
<SchemaTypes xmlns="http://asialee.javaeeye.com"> <SchemaType> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Status"> <xsd:simpleType> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="ValidData" /> <xsd:enumeration value="InvalidData" /> <xsd:enumeration value="Accept" /> <xsd:enumeration value="BadCredit" /> <xsd:enumeration value="OverLimit" /> <xsd:enumeration value="BadDataFormat" /> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:schema> </SchemaType> </SchemaTypes>
SAXReader reader = new SAXReader(); Document document = reader.read(xmlFile); Element rootElement = document.getRootElement(); Element schemaType = rootElement.element("SchemaType"); Element xsdElement = (Element)schemaType.elements().get(0); System.out.println(xsdElement.asXML());
dom4j会将elementname识别成xsd:schema,然后再增加一层xsd,返回的xml就变成了xsd:xsd:schema,这个现在还没有找到好的解决办法,我使用的是
replaceAll("\\<xsd:", "<")
.replaceAll("</xsd:", "</")
.replaceAll("xmlns:xsd=\"\"", "")
感觉太恶心了,但是现在只能先这么实现着
还有dom4j好像解析xsd文件比较困难,我实在不想再找另外一个库,然后就先这么实现着,等以后研究了源码再看看.
3. Dom 节点 Atrribute 的顺序问题
dom4j里面的attributes方法返回的是一个List<Attribute>这个比较好,是一个定义顺序。但dom里面的getAttributes()返回的是NamedNodeMap 它按照Attribute的名字,按字典序排序了,这个地方我比较赞dom4j
4. Dom4j里面的Node的transformer是不行了,只能整个document进行转换
来看下javax.xml.transform.Transformer里面的接口
transform(Source xmlSource, Result outputTarget)
但是dom4j只提供了DocumentSource,它是继承javax.xml.transform.dom.Source的再来看看DocumentSource的构造函数,我们传递一个node,它还是得到它的document,这 个来说,如果想要对某个Node进行transform,就显得没有什么好的办法了.
public DocumentSource(Node node) { setDocument(node.getDocument()); } public DocumentSource(Document document) { setDocument(document); }
5. dom4j里面提供了SAXReader和DomReader,这个方式就是既可以用dom也可以使用
sax来进行读取,但是如果用dom的形式,如果要进行xml的validation,就显得不太好弄了.
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); builderFactory.setFeature("http://apache.org/xml/features/continue-after-fatal-error",true); DocumentBuilder builder = null; if(isValidationON){ builderFactory.setFeature("http://xml.org/sax/features/validation",true); builderFactory.setFeature("http://apache.org/xml/features/validation/schema",true); builder = builderFactory.newDocumentBuilder(); builder.setEntityResolver(new MyDefaultEntityResolver()); } else { builder = builderFactory.newDocumentBuilder(); } builder.setErrorHandler(new MyDefaultParsingErrors());
是因为feature要设置再builderFactory里面,然后entityRelver要设置再builder上面。这样就显得特别别扭。因为DocumentBuilder,底层有一个DomParser,但是对外并没有提供获得它的方法,不知道有没有别的什么办法来获得它.
发表评论
-
maven的system scope的依赖在打包的时候不出现在lib里面的解决
2017-09-20 11:21 0上周遇到一个问题,一个sytem scope的依赖,在导出的 ... -
JAVA静态代码块
2015-04-07 16:26 2032今天遇到下面的代码 ... -
StringUtils.repeat函数赏析与疑问
2014-09-01 18:43 6090今天实现一个字符串拼接的一个需求,比如: ... -
java服务的培训ppt
2014-08-30 23:01 1581给应届生培训java web 服 ... -
给新人制定的java学习计划
2014-08-30 22:52 2493花了一点时间,给团队应届生和实习生制定 ... -
获取手机的mac地址
2014-04-10 22:20 3405与IP不同,MAC是指连接WIFI使用的无线网卡的物理地址, ... -
解决errorpage里面取不到Authentication的问题
2013-01-20 23:56 2449本人原创,发现一些网站无道德的抓取 ... -
SimpleDateFormat使用的时候的注意点
2012-12-06 20:59 2054今天在帮助同事查找一个项目bug的时候发现一个很奇怪 ... -
java和javascript的正则表达式有点不同
2012-11-06 18:54 1446今天在项目中遇 ... -
velocity 1.6.4的一个bug
2012-09-10 17:24 2178$.ajax()在Velocity中会冲突, 总之 ... -
一种多数据源分页算法
2012-09-10 17:13 7549以前开发一个系统,需要去多个系统去取数据,简单期间,比 ... -
使用stringBuffer和StringBuilder拼串要注意的问题
2012-07-30 17:30 8094今天在和同事排除一个问题的时候发现,从 ... -
java获取当月的工作日
2012-05-10 12:07 6130在这个记录一下,记录java获取某个月的工作日的代码,方便以 ... -
webservice引用传参
2012-04-19 19:38 1448http://www.blogjava.net/xylz/ar ... -
java获取当天的开始时间,当前周的开始时间
2012-04-16 17:31 19595在程序里面要获取当前的开始时间和结束时间,以及当前天 ... -
edtFTPj源码学习
2012-04-11 16:25 1252下面是edtFTPj的源码学习,下面的类图都是我自己亲手花的, ... -
ftp协议研究
2012-03-12 17:34 1272ACTIVE FTP OPERATION 1、客户端使用源 ... -
西安交通大学的错误日志
2011-12-14 13:30 1010西安交大的网站报错了,记录下出错日志,改天研究一下。 HT ... -
tomcat的favicon.ico的用法
2011-12-01 20:00 22261. web.xml文件添加下面的mime-mapping ... -
htmlunit模拟sso登陆
2011-07-27 14:45 6939import java.io.IOException; ...
相关推荐
在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...
DOM4J 的使用 DOM4J 是一个开源的 XML 解析包,由 dom4j.org 出品,应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM、SAX 和 JAXP。DOM4J 的主要特点是使用大量的接口,所有主要接口都在 org.dom4j 里面定义...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、修改和查询变得简单。...了解并掌握DOM4J的使用,对于任何涉及XML的Java开发者来说都是非常有价值的技能。
总之,DOM4J 1.6.1是一个功能强大且广泛使用的XML处理库,它的Maven集成使得在Java项目中使用变得方便。无论是创建XML文档、查询XML结构还是进行XML数据操作,DOM4J都能提供简洁、高效的API。在安装和使用过程中,...
12. **常见问题与解决方案**:列举了一些在使用DOM4J过程中可能会遇到的问题及其解决方法。 通过阅读和实践DOM4J的帮助文档和使用教程,开发者可以全面掌握DOM4J的各种特性和用法,从而更高效地处理XML数据。这个...
尽管DOM4J功能强大,但在某些特定情况下,如需要高度优化的性能或内存使用,可能需要考虑其他XML处理库,如StAX(Streaming API for XML)或VTD-XML。不过对于大多数常规XML处理任务,DOM4J已经足够胜任,并且由于其...
这个标签直接关联了DOM4J库的核心文件,表明讨论的内容与DOM4J的使用和特性有关。 **文件名称列表:xml** 这个列表只包含了一个条目"xml",可能意味着压缩包中包含的是与XML相关的文件或资源,可能是XML示例文件、...
"dom4j-2.1.3-javadoc.jar"文件则包含了DOM4J库的API文档,是开发者学习和使用DOM4J的重要参考资料。通过这个文件,我们可以查找类、接口、方法的详细说明,理解它们的功能和使用方式,这对于开发过程中快速定位问题...
通过理解并熟练使用DOM4J,开发者可以更高效地处理XML相关的任务,提高代码的可维护性和可读性。同时,由于其开源和社区活跃,DOM4J还拥有丰富的文档和社区支持,遇到问题时可以方便地找到解决方案。
1. 加载XSD文件:使用DOM4J的DocumentHelper类的parse方法,传入XSD文件的路径,得到一个SchemaFactory对象。 ```java SchemaFactory schemaFactory = DocumentHelper.createSchema(new File("path_to_xsd_file.xsd...
**DOM4J使用简介** DOM4J 是一个强大的 Java 库,专为处理 XML 文档而设计。它提供了丰富的 API,使得在 Java 中解析、创建、修改 XML 文件变得简单高效。DOM4J 不仅支持 DOM(文档对象模型)和 SAX(简单API for ...
DOM4J的2.0.3版本修复了一些已知问题,提升了稳定性,同时保持了对XML规范的良好支持。 二、核心概念 1. **Element**: DOM4J中的Element类代表XML文档中的元素节点,它是DOM4J中最重要的类。通过Element,我们可以...
标题提到的"所有版本的dom4j工具包"表明这是一个包含多版本DOM4J库的集合,可能包括了从早期到较新的一些版本,如dom4j-1.4.jar、dom4j-1.6.1.jar和dom4j-1.5.2.jar。这些不同版本的库可能分别对应于不同的功能特性...
**DOM4J使用教程** DOM4J是一款非常优秀的Java XML API,它提供了全面而强大的功能,包括XML的解析、创建、修改以及查询等操作。在Java世界中,DOM4J因其简单易用和高效性而备受青睐。这篇教程将深入探讨DOM4J的...
2. 性能优异:相比其他XML解析库,DOM4J在处理大规模XML文档时表现出更好的性能,因为它采用了一些优化策略,如延迟加载(lazy loading),避免一次性加载整个文档导致的内存消耗。 3. 功能强大:DOM4J不仅支持基本...
DOM4J则是基于DOM的一种轻量级API,它弥补了DOM的一些不足,比如性能问题和内存消耗。DOM4J通过提供SAX(Simple API for XML)和DOM的接口,使开发者可以选择更适合他们应用场景的方法来处理XML。 在DOM4J 1.6.1中...
在"dom4jdemo"这个子文件夹中,很可能是包含了一个或多个Java源代码文件,演示了如何使用DOM4J进行XML操作的实例。这些代码通常会包含导入DOM4J库的语句,如`import org.dom4j.Document;`和`import org.dom4j....
dom4j使用手册;
当我们遇到“java.lang.ClassNotFoundException: org.dom4j.DocumentException”的错误提示时,这通常意味着系统中缺少了DOM4j库,只需将“org.dom4j.jar”添加到项目类路径中即可解决此问题。 DOM4J是基于DOM和SAX...