xml接口 BB雷电pk XML中常用的几种解析方法

日期:2021-02-09 18:12:04 浏览量: 85

解析XML的方式很多,开放源代码有十多种:Xerces,JDOM,DOM4J,XOM,JiBX,KXML,XMLBeans,jConfig,XStream,XJR等。

但是最常用的是sax,dom,pull,dom4j

在android中最常用的是sax(XML的简单API),dom(文档对象模型)和pull,这三种方法中最适合使用pull。 (大多数用于Java的解析器都可以在android上使用。有人说dom4j是最好的。我还没有尝试过。暂时说起来并不容易,但是大多数人说pull很好)

SAX

sax是用于处理xml事件驱动的“推送”模型;

优点:解析速度快,内存少,需要加载哪些数据以及要分析的内容。

缺点:它不记录标签之间的关系,但需要由应用程序本身处理,这将增加程序的负担。

DOM

DOM是文档对象模型;

优点:dom可以以独立于平台和语言的方式访问和修改文档的内容和结构。 dom技术允许用户页面动态更改银河体育app ,例如动态显示和隐藏元素,更改其属性以及添加An元素等,dom可以大大增强页面的交互性。

缺点:当dom解析xml文件时,xml文件的所有内容都以文档树的形式存储在内存中。

拉动

xml引入 xml文件_xml引入另一个xml文件_xml接口

拉动与萨克斯非常相似。区别在于,在pull读取xml文件之后,将触发相应的事件,并且call方法返回一个数字,并且可以在程序中控制pull。您可以在想解析的任何地方停止解析。 (SAX解析器的工作方法是将事件自动推送到事件处理程序中进行处理凤凰彩票 ,因此您无法控制事件的处理以主动结束;而Pull解析器的工作方法是允许您的应用程序代码主动获取来自解析器的事件,因为它是主动获取事件xml接口,所以您不能在满足所需条件后再获取事件并结束分析,而pull是一个while循环,可以随时跳出,而sax不是。只要解析了sax,就必须完成分析。)

加深:

1)DOM(JAXP绯红色解析器)

DOM是W3C的官方标准,用于以平台和语言无关的方式表示XML文档。 DOM是按层次结构组织的节点或信息片段的集合。这种分层结构使开发人员可以在树中查找特定信息。分析结构通常需要加载整个文档并构造层次结构,然后才能完成任何工作。因为它基于信息层次结构,所以DOM被认为是基于树或基于对象的。 DOM和基于树的通用处理具有多个优点。首先,由于树在内存中是持久性的,因此可以对其进行修改og真人 ,以便应用程序可以更改数据和结构。它也可以随时在树上上下导航,而不是像SAX这样的一次性过程。 DOM也更易于使用。

2)SAX

SAX处理的优点与流媒体的优点非常相似。分析可以立即开始,而不必等待所有数据被处理。此外,由于应用程序仅在读取数据时检查数据,因此无需将数据存储在内存中。对于大型文档而言,这是一个巨大的优势。实际上,应用程序甚至不必解析整个文档。当满足特定条件时,它可以停止解析。一般来说银河国际 ,SAX比其替代DOM快得多。

xml引入 xml文件_xml接口_xml引入另一个xml文件

--------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------------

选择DOM还是SAX?对于需要编写自己的代码来处理XML文档的开发人员,选择DOM或SAX解析模型是一个非常重要的设计决策。 DOM使用树结构来访问XML文档,而SAX使用事件模型。

DOM解析器将XML文档转换为包含其内容的树,并且可以遍历该树。使用DOM解析模型的优点是易于编程。开发人员只需要调用说明来构建树,然后使用导航API访问所需的树节点即可完成任务。您可以轻松地在树中添加和修改元素。但是,由于在使用DOM解析器时需要处理整个XML文档,因此性能和内存要求相对较高,尤其是遇到大型XML文件时。由于其遍历功能,DOM解析器经常用于需要频繁更改XML文档的服务中。

SAX解析器使用基于事件的模型。解析XML文档时,它可以触发一系列事件。找到给定标签后,它可以激活一个回调方法以告知该方法指定的标签已打开。 SAX的内存要求通常相对较低,因为它允许开发人员确定要处理的标签。特别是当开发人员只需要处理文档中包含的部分数据时,SAX的扩展功能就可以更好地体现出来。但是,使用SAX解析器时,编码更加困难,并且难以同时访问同一文档中的多个不同数据。

--------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------

3)JDOM(相当于sax和dom的组合)

xml接口_xml引入另一个xml文件_xml引入 xml文件

JDOM主要用于Java。它简化了与XML的交互,并且比使用DOM更快。由于JDOM是第一个特定于Java的模型,因此已大力推广JDOM。通过“ Java Specification Request JSR-102”正在考虑将其最终用作“ Java Standard Extension”。从2000年初开始就开始JDOM开发。

JDOM与DOM在两个主要方面不同。首先,JDOM仅使用具体的类,而不使用接口。这在某些方面简化了API,但同时也限制了灵活性。其次,API广泛使用了Collections类,从而简化了已经熟悉这些类的Java开发人员的使用。

JDOM文档指出凤凰彩票app ,其目的是“花费20%(或更少)的精力来解决80%(或更多)的Java / XML问题”(根据学习曲线假设20%)。 JDOM对于大多数Java / XML应用程序无疑是有用的,并且大多数开发人员发现该API比DOM更容易理解。 JDOM还包括对程序行为的相当广泛的检查,以防止用户在XML中做无意义的事情。但是,它仍然需要您完全了解XML,以完成除基本工作以外的其他工作(甚至在某些情况下甚至了解错误)。这可能比学习DOM或JDOM接口更有意义。

JDOM本身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档(尽管它也可以将以前构造的DOM表示形式作为输入)。它包含一些转换器,可将JDOM表示形式输出到SAX2事件流,DOM模型或XML文本文档中。 JDOM是根据Apache许可的一种变体发布的开放源代码。

4)DOM4J

尽管DOM4J代表了完全独立的开发成果,但它最初是JDOM的智能分支。除了基本的XML文档表示形式外,它还集成了许多功能,包括集成的XPath支持,XML Schema支持以及对大型或流式文档的基于事件的处理。它还提供了构建文档表示的选项,并且具有通过DOM4J API和标准DOM接口的并行访问功能。自2000年下半年以来一直在开发中。

为支持所有这些功能,DOM4J使用接口和抽象的基本类方法。 DOM4J在API中广泛使用了Collections类,但是在许多情况下,它还提供了一些替代方法来实现更好的性能或更直接的编码方法。直接的好处是,尽管DOM4J付出了更复杂的API的代价,但它提供了比JDOM更大的灵活性。在增加灵活性,XPath集成和大型文档处理目标时,DOM4J的目标与JDOM相同:Java开发人员易于使用且直观操作。它还致力于成为一个比JDOM更完整的解决方案,以实现实质上处理所有Java / XML问题的目标。为实现此目标,与JDOM相比,它更加注重防止错误的应用程序行为。

DOM4J是一个非常非常好的Java XML APIxml接口,具有出色的性能,强大的功能和非常易于使用的特性。它也是一个开源软件。现在,您可以看到越来越多的Java软件正在使用DOM4J读写XML,尤其值得一提的是,即使Sun的JAXM也在使用DOM4J。

2……比较

1)DOM4J具有最佳性能,即使Sun的JAXM也使用DOM4J。当前,许多开源项目广泛使用DOM4J,例如著名的Hibernate也使用DOM4J读取XML配置文件。如果不考虑可移植性,请使用DOM4J。

2)JDOM和DOM在性能测试期间表现不佳,并且在测试10M文档时内存溢出。在小文档的情况下,也值得考虑使用DOM和JDOM。尽管JDOM的开发人员已经表示,他们希望在正式发布之前关注性能问题,但从性能的角度来看,确实不建议这样做。另外,DOM仍然是一个很好的选择。 DOM实现被许多编程语言广泛使用。它也是许多其他XML相关标准的基础,因为它是W3C正式推荐的(与基于非标准的Java模型相对),因此在某些类型的项目中(例如使用DOM)也可能需要它。在JavaScript中)。

3)SAX的性能更好,具体取决于事件驱动的特定分析方法。 SAX会检测到即将到来的XML流,但不会将其加载到内存中(当然,当读取XML流时,某些文档将暂时隐藏在内存中)。