`
i_bugs
  • 浏览: 4148 次
社区版块
存档分类
最新评论

i_bugs study: dom4j解析XML

    博客分类:
  • java
阅读更多

    简介:
    1. JAVA XML API
    2. Dom4j is a simple and flexible open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework with full integration with DOM, SAX and JAXP.



    概念:
    1. XML
    全称:Extensible Markup Language,可扩展标记语言
    定义:用于标记电子文件使其具有结构性标记语言
    作用:提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据

    2. DOM
    全称:Document Object Model,文档对象模型
    定义:The Document Object Model is a platform-and language-neutral interface that will allow programs and scripts to dynamically access and update the content, structure and style of documents. The document can be further processed and the results of that processing can be incorporated back into the the presented page.
    文档对象模型作为与平台和语言无关的接口,允许程序和脚本语言动态访问和更新文档的内容,结构和样式。使用文档对象模型的文件可以被进一步处理,同时处理的结果可以合并到已显示的页面中。


    为什么选择DOM4J解析器
    1. 常见解析器
    DOM是基于平台、语言无关的W3C标准。基于树的层次,其优点是可以移植,编程容易,开发人员只需要调用建树的指令。缺点是加载大文件不理想。

    SAX是基于事件模型的,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag时候,他可以激活一个回调方法,告诉该方法制定的标签已经找到。类似与流媒体的解析方式,所以在加载大文件的时候效果不错。

    JDOM是想成为Java特定文档模型。简化与XML的交互并且比使用DOM实现更快。使用的是具体类不使用借口,运用大量的Collection类,方便程序员。To provide a complete, Java-based solution for accessing, manipulating, and outputting XML data from Java code.

    DOM4J是一个独立的开发结果,非常优秀的Java XML API, 具有性能优异、功能强大和极端易用的特点,同时是一个开源工具。

    2. 原因
    DOM4J性能最好,连Sun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4J,例如Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.

[list]
DOM4J使用
1. 方法列表

创建SAX解析器,以便通过解析器将XML转换成DOM4J树形模型。
//SAXReader creates a DOM4J tree from SAX parsing events.
//The actual SAX parser that is used by this class is configurable so you can use your favourite SAX parser if you wish. 事实上本类所使用的SAX解析器是可以配置的,因此可以选择你钟爱的SAX解析器。
//DOM4J comes configured with its own SAX parser so you do not need to worry about configuring the SAX parser. DOM4J来配置自己的SAX解析器,因此你不必要担心如何配置SAX解析器了。
new SAXReader();


SAXReader提供了读取File文件的方法,更多方法见源码。
//Reads a Document from the given File.
//We cannot convert the file to an URL because if the filename contains '#' characters, there will be problems with the URL in the InputSource
read(File file)


DOM4J Document提供了获取根节点方法
//Returns the root Element for this document.
Element org.dom4j.Document.getRootElement()


获取根元素名称
//getName returns the name of this node. This is the XML local name of the element, attribute, entity or processing instruction. For CDATA and Text nodes this method will return null.
String org.dom4j.Node.getName()


通过名称获取元素
//Returns the first element for the given local name and any namespace.
Element org.dom4j.Element.element(String name)


获取直接子元素对象List
//Returns the elements contained in this element. If this element does not contain any elements then this method returns an empty list. The list is backed by the element such that changes to the list will be reflected in the element though the reverse is not the case. 
List org.dom4j.Element.elements()


获取元素文本
//Returns the text value of this element without recursing through child elements. This method iterates through all Text, CDATA and Entity nodes that this element contains and appends the text values together.
String org.dom4j.Element.getText()


其它方法略(如取得元素属性、增加、删除元素等方法),详情参看源码
2. 实例
下载jar包,见Reference [1]



    Reference
    1. http://sourceforge.net/projects/dom4j/
    2. http://www.w3.org/DOM/
    3. http://jdom.org/
分享到:
评论

相关推荐

    【图像分类数据集】农作物害虫分类(昆虫分类)数据集12846张27类别.zip

    "brown_marmorated_stink_bugs":"棕色土拨鼠蝽" "cabbage_loopers":"卷心菜活套" "catterpillar":"卡特尔" "citrus_canker":"柑橘溃疡" "colorado_potato_beetles":"科罗拉多马铃薯甲虫" "corn_borers":"玉米螟" ...

    From_LNK_to_RCE:Finding_bugs_in_Windows_Shell_Link_Parser.pdf

    《从LNK到RCE:探索Windows Shell链接解析器中的漏洞》 该文档详细阐述了在Windows操作系统中,如何从LNK(快捷方式)文件格式的深入研究中发现并利用安全漏洞,最终实现远程代码执行(RCE)。作者Lays是TeamT5团队...

    find_bugs 工具

    `find_bugs`工具是一款广泛使用的静态代码分析工具,它主要针对Java程序,旨在帮助开发者在编码阶段就发现潜在的错误和不良编程习惯,从而提高软件质量和可维护性。这款工具通过扫描字节码来检测可能存在的问题,而...

    undelete_plus_hh_bugs(文件恢复).zip

    《文件恢复技术详解:undelete_plus_hh_bugs软件的应用》 在数字化时代,文件的安全性和可恢复性显得尤为重要。当我们不慎误删了重要文件,或者由于硬盘故障导致数据丢失时,文件恢复软件就成为了一种宝贵的救星。...

    awesome_windows_logical_bugs:收集学习案例

    work in progress (WIP) , I'm always update this repo when the new bugs release.特权升级(漏洞和其他研究):特权文件操作Bug到SYSTEM shell(技术):服务帐户拥有SYSTEM特权(令牌模拟):工具: James ...

    WooYun_Bugs(漏洞库)、Qingy安全漏洞库、佩奇PeiQi-WIKI-POC漏洞库、yougar0等漏洞库

    WooYun_Bugs(漏洞库)、Qingy安全漏洞库、佩奇PeiQi-WIKI-POC漏洞库、yougar0等漏洞库几10个G左右(如有侵权联系删除,分享资源仅用于教学和交流)

    JEE_TOMEE_BUGS_SAMPLE_PROJECT_A:用于向 TomeEE 提交错误的示例项目

    JEE_TOMEE_BUGS_SAMPLE_PROJECT_A 用于向 TomeEE 提交错误的示例项目 此示例项目旨在比较 JEE 代码部署到不同容器,即 Weblogic、Glassfish 和 Tomee。 它的主要目标是找出 Tomee 容器上的错误。 在第一次推送到...

    csgo_bugs:CSGO随机物品

    2019年4月5日 sv_pure_bypass 是的 ?? 2019年5月 sv_pure_bypass_2 是的 ?? 2019年10月 sv_pure_bypass_3 是的 2020年7月24日 , 和 sv_pure_bypass_4 是的 2020年6月8日 和 sv_pure_bypass_5 是的 2020...

    reproduce_kernel_bugs:重现Syzkaller发现的内核错误,并提供一些有用的脚本进行重现

    4. **日志分析**:收集并分析内核日志,寻找错误发生时的线索。这可能涉及使用`dmesg`命令查看内核消息,或使用`kdump`等工具捕获核心转储文件。 5. **调试工具应用**:利用GDB、SystemTap、perf等内核调试工具,...

    Debug_It!_Find,_Repair,_and_Prevent_Bugs_in_Your_Code

    _Find,_Repair,_and_Prevent_Bugs_in_Your_Code》是一本专注于软件开发中的调试技术的书籍。书中不仅涵盖了技术层面的内容,还涉及了调试过程中的心理因素和智力挑战。Paul Butcher在书中对调试过程的每一阶段进行了...

    discovRE__Efficient_Cross-Architecture_Identification_of_Bugs_in_Binary_Code.pdf

    discovRE: Efficient Cross-Architecture Identification of Bugs in Binary Code是发表在NDSS'16会议上的论文。本文在SP'15的基础上提出了在效率和效果上都有提高的跨架构二进制代码漏洞检测方案。 Abstract & ...

    sphinx0.9中文手册

    #### 四、搜索 **4.1 匹配模式** 支持多种匹配模式,如精确匹配、模糊匹配等。 **4.2 布尔查询** 布尔查询允许用户通过AND、OR、NOT等逻辑运算符组合查询条件。 **4.3 扩展查询** 除了基本的查询外,还支持更...

    cmake_cache_bugs:一个仓库,突出显示与cmake缓存变量有关的问题

    cmake_cache_bugs 一个回购,重点介绍CMake缓存变量的问题 第1期 增量构建错误。 第2期 未使用的缓存变量问题。

    finding_the_bugs_project:用CodeSandbox创建

    这些错误将包括不应再使用(不推荐使用)的标签,导致调试或掉毛错误的错误以及应避免的语法。 下面提供的资源将帮助您识别这些错误。资源 指示使用codeandbox克隆此仓库在打开一个新项目单击右上角的“创建沙箱”...

    hugs_for_bugs:Hackathon解决方案

    自述文件 该项目旨在通过提高租户整体体验并为他们提供使用服务的小激励机制,激励他们更频繁地使用租车服务。 要点概述和解释如下: 拼车模型 登录该应用后,您可以预订所需日期和时间的汽车。...

    VClike_fixed_bugs

    类似于VC中workspace的控件,是我从CJ60Lib库中提取出来的并做了些修改,不依赖于CJ60Lib库,能够使程序更小,而且还修复了两个重要的bug:1.程序最小化,并恢复后,子控件不重绘。2.在controlbar处于浮动状态时,主...

    The BUGS Book: A Practical Introduction to Bayesian Analysis

    BUGS采用了MCMC(Markov Chain Monte Carlo)算法,使得对后验分布的采样成为可能,即便这个分布非常复杂或者没有明确的解析形式。 贝叶斯分析通常涉及到对先验分布的设定,这是一个表达研究者关于未知参数的先验...

    Perl-Format-String-Bugs.zip_Bugs

    4. **防御策略**:提出避免此类漏洞的最佳实践,如使用安全的字符串格式化函数(如`sprintf`到安全的变量,然后再输出),严格验证用户输入,或者使用只读的格式字符串。 5. **案例研究**:提供实际的代码示例,...

    Zlip.zip_Bugs_ZLIP _单片机stm10x

    《Zlip.zip_Bugs_ZLIP _单片机stm10x》——STM32 10x系列上的ZLIP协议移植与Bug修复 在嵌入式开发领域,网络通信协议的正确实现至关重要,而ZLIP(Zlib Light for Internet Protocol)是一种轻量级的压缩协议,常...

    poj1038--Bugs.rar_Bugs_poj 1038 _poj10_poj1038

    标题中的“poj1038--Bugs.rar”是一个关于解决编程竞赛问题的压缩文件,其中包含了对“Bugs”问题的解答。POJ(Problemset Online Judge)是一个在线编程竞赛平台,它提供了一系列的问题供参赛者解决,旨在锻炼和...

Global site tag (gtag.js) - Google Analytics