XML文件的创建和解析常用的主要有4种,下面以xml文件为例进行说明:
<?xml version="1.0" encoding="utf-8"?> <dict> <record> <row> <field name="dictname" value="Sex" describe="性别"></field> <field name="dictitem" value="0000"></field> </row> <row> <field name="dictname" value="Province" describe="省市"></field> <field name="dictitem" value="0001"></field> </row> </record> </dict>
1、Dom(Document Object Model)创建和解析XML文档:
描述:将整个xml文件解析成一个Dom树存放在内存中,然后通过程序去访问内存中的树信息。
优点:树存在内存中,操作上相对简单,可支持删除、修改和排序。
缺点:内存消耗大,硬件要求高。
Dom API解析XML的步骤:
A、扫描XML文件,获取输入流对象:
InputStream in = new FileInputStream(sFileName);
B、创建解析器对象:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
C、解析文件流,获得Document对象:
Document document = builder.parse(in);
D、根据获得的Document对象,获取节点信息。
代码实现请参考附件DomUtils.java
2、SAX(Simple API for XML)创建和解析XML文档:
描述:事件驱动,解析器发现元素开始、元素结束及文档的开始和结束时,会通知处理事件。我们只需要利用代码响应事件就可实现文档的处理。
优点:占用资源少(不需要加载整个文档),解析器代码小。
缺点:不持久,事件后没保存数据则数据丢失;无状态,事件只能得到文本,却不知文本所属元素。
SAX解析XML的步骤:
A、创建SAXParserFactory实例:
SAXParserFactory factory = SAXParserFactory.newInstance();
B、创建SAXParser实例;
C、创建SAXReader实例:
XmlReader reader = factory.newSAXParser().getXMLReader();
D、XMLReader加载XML,解析XML。
代码实现请参考附件SaxUtils.java。
3、Dom4j创建和解析XML文档:
描述:Dom4j具有丰富的Java XML API,拥有性能优异,功能强大(拥有本地的XPath支持),使用简单的特性。
Dom4j解析XML文件的步骤:
A、读取文件:
File file = new File(String sFileName);
B、创建XMLReader:
XMLReader reader = new XMLReader();
C、解析XML,获取Document:
Document document = reader.read(file);
D、解析文档Dom,获取节点及属性值。
代码实现请参考附件Dom4jUtils。
4、JDom创建和解析XML文档:
描述:20-80原则,大大减少了代码量。底层是使用SAX(最常用)、DOM、Xanan文档实现。
JDom解析XML文件的步骤:
A、创建解析器:
SAXBuilder builder = new SAXBuilder(false);
B、得到Document文档:
Document document = builder.build(xmlpath);
C、获取根节点:
Element root = document.getRootElemnet();
D、遍历获得节点信息:
root.getChildren();
代码实现请参考附件JDomUtils。
5、Apache Commons Degister解析XML:
描述:Degister由"事件"驱动,通过调用预定义的规则操作对象栈,将XML文件转换为Java对象。
原理:底层采用SAX解析XML,识别出特定XML元素(实际被细分为begin、body、end、finish四个时点),执行特定的动作(创建特定的Java对象,或调用特定对象的方法)。
XML元素根据匹配模式(matching pattern)识别,而相关操作由规则(rule)定义。转换过程中,Digester维持了一个对象栈,用来存放转换中生成的、或是为转换临时创建
的Java对象。对输入XML文件作了一趟完整的扫描后,对象栈的栈顶元素即为目标对象。
优点:Degister屏蔽了Sax的解析细节,仅关注解析本身,大大简化了转换操作。
注:工具类基本能满足所有的XML文档操作。
相关推荐
近年来,可扩充标记语言(XML)技术的应用越来越广泛,实现XML文件解析的方式也是多种多样。文章参照万维网联盟(W3C)定义的文档对象模型(DOM)标准接口文档,介绍了一种在标准C++语言的基础上实现DOM接口的方案,该方案不仅...
XML文件解析工具类
XML文件解析编辑小工具 firstobject xml editor 2.4,绿色小巧方便实用
工具内容包括java程序开发中文件配置解析需要实用的jar包工具——[dom4j-1.6.1.jar]&[jaxen-1.1-beta-6.jar]
XML 001 XML概述、编写XML文档
自己编写的天气预报小程序,使用了sqlit数据库,xml文件解析等方法。
pomxml文件解析pomxml文件解析pomxml文件解析
javascript 对xml文件解析 解决大家常见的javascript对xml文件解析问题
TinyXML2是simple、small、efficient开源的C++ XML文件解析库,可以很方便的应用到现有的项目之中。非常适合存储简单数据,配置文件,对象序列化等数据量不是很大的操作。
C++实现对xml文件的解析,C++实现对xml文件的解析,C++实现对xml文件的解析。
一款轻量级的XML解析器,能够容易的解决中文问题 如果你要做的东西不是非常大的项目的话,比较...rar压缩包中包含了TinyXML解析器配套的文档,支持C、c++的轻量级的XML文档解析器,支持中文,非常适合不太大的项目
Tinyxml文件解析经典例子
自学xml文件解析用的文档,tinyxml2解析文档较简单,内含源码及中文说明
C++编写的xml文件解析的类,能够读取xml文件,解析关键字段
xml文件解析经典样例xml文件解析经典样例
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...
xml 文件解析,详细的资料,不要积分,欢迎下载
xml 文件解析,可以在vc中直接使用的简易xml解析工具,方便简单快截
基于c++的xml文档解析器源代码。实现对标准xml文档解析:读取、遍历、查找、插入、保存等基本操作。