`
jiagou
  • 浏览: 2609265 次
文章分类
社区版块
存档分类
最新评论

XPP3 即 MXP1--一个非常快的XML解析器

 
阅读更多

alfresco用到了大量的第三方的工具或者项目。本文列举并介绍这些项目和工具,以便在使用和分析alfresco的时候能够有一些帮助。


1、XPP3 也叫MXP1

XPP —— XML Pull Parser,XPP3是一个非常快的XML解析器,是第三版的XPP。

XPP2是XPP的第二版。
XPP3是XPP2的继承者,实现了http://www.xmlpull.org定义的XmlPull API 。
XPP3只能用于解析XML,不支持节点树的增加操作。
看到有人做的对比测试,XPP3 比DOM4J 快6倍,也就是使用了1/6时间。

XPP3使用的是Apache 1.1 variant License 协议。

http://www.extreme.indiana.edu/xgws/xsoap/xpp/mxp1/index.html

http://mvnrepository.com/artifact/xpp3/xpp3

http://www.xmlpull.org/

使用举例:http://www.xmlpull.org/v1/download/unpacked/doc/quick_intro.html


MyXmlPull.java

============

import java.io.FileReader;
import java.io.IOException;
import java.io.StringReader;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

/**
 * An example of an application that uses XMLPULL V1 API.
 *
 * @author <a href="http://www.extreme.indiana.edu/~aslom/">Aleksander Slominski</a>
 */
public class MyXmlPullApp
{

    public final static String SAMPLE_XML =
        "<?xml version=\"1.0\"?>\n"+
        "\n"+
        "<poem xmlns=\"http://www.megginson.com/ns/exp/poetry\">\n"+
        "<title>Roses are Red</title>\n"+
        "<l>Roses are red,</l>\n"+
        "<l>Violets are blue;</l>\n"+
        "<l>Sugar is sweet,</l>\n"+
        "<l>And I love you.</l>\n"+
        "</poem>";

    public static void main (String args[])
        throws XmlPullParserException, IOException
    {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser xpp = factory.newPullParser();
        System.out.println("parser implementation class is "+xpp.getClass());

        MyXmlPullApp app = new MyXmlPullApp();

        if(args.length == 0) {
            System.out.println("Parsing simple sample XML");//:\n"+ SAMPLE_XML);
            xpp.setInput( new StringReader( SAMPLE_XML ) );
            app.processDocument(xpp);
        } else {
            for (int i = 0; i < args.length; i++) {
                System.out.println("Parsing file: "+args[i]);
                xpp.setInput ( new FileReader ( args [i] ) );
                app.processDocument(xpp);
            }
        }
    }


    public void processDocument(XmlPullParser xpp)
        throws XmlPullParserException, IOException
    {
        int eventType = xpp.getEventType();
        do {
            if(eventType == xpp.START_DOCUMENT) {
                System.out.println("Start document");
            } else if(eventType == xpp.END_DOCUMENT) {
                System.out.println("End document");
            } else if(eventType == xpp.START_TAG) {
                processStartElement(xpp);
            } else if(eventType == xpp.END_TAG) {
                processEndElement(xpp);
            } else if(eventType == xpp.TEXT) {
                processText(xpp);
            }
            eventType = xpp.next();
        } while (eventType != xpp.END_DOCUMENT);
    }


    public void processStartElement (XmlPullParser xpp)
    {
        String name = xpp.getName();
        String uri = xpp.getNamespace();
        if ("".equals (uri)) {
            System.out.println("Start element: " + name);
        } else {
            System.out.println("Start element: {" + uri + "}" + name);
        }
    }


    public void processEndElement (XmlPullParser xpp)
    {
        String name = xpp.getName();
        String uri = xpp.getNamespace();
        if ("".equals (uri))
            System.out.println("End element: " + name);
        else
            System.out.println("End element:   {" + uri + "}" + name);
    }

    int holderForStartAndLength[] = new int[2];

    public void processText (XmlPullParser xpp) throws XmlPullParserException
    {
        char ch[] = xpp.getTextCharacters(holderForStartAndLength);
        int start = holderForStartAndLength[0];
        int length = holderForStartAndLength[1];
        System.out.print("Characters:    \"");
        for (int i = start; i < start + length; i++) {
            switch (ch[i]) {
                case '\\':
                    System.out.print("\\\\");
                    break;
                case '"':
                    System.out.print("\\\"");
                    break;
                case '\n':
                    System.out.print("\\n");
                    break;
                case '\r':
                    System.out.print("\\r");
                    break;
                case '\t':
                    System.out.print("\\t");
                    break;
                default:
                    System.out.print(ch[i]);
                    break;
            }
        }
        System.out.print("\"\n");
    }
}


java源文件下载地址:http://download.csdn.net/detail/teamlet/4399658


分享到:
评论

相关推荐

    xpp3 xml解析器

    总结来说,XPP3是一个快速、轻量级的XML解析库,适用于资源受限或对性能有较高要求的环境。通过Pull解析模式,它实现了对XML文档的高效处理,降低了内存消耗,并提供了灵活的API供开发者使用。在处理大型XML文件或在...

    xpp3-1.1.4c-API文档-中文版.zip

    赠送jar包:xpp3-1.1.4c.jar; 赠送原API文档:xpp3-1.1.4c-javadoc.jar; 赠送源代码:xpp3-1.1.4c-sources.jar; 赠送Maven依赖信息文件:xpp3-1.1.4c.pom; 包含翻译后的API文档:xpp3-1.1.4c-javadoc-API文档-...

    xstream-1.3.jar xpp3_min-1.1.4c.jar

    接着是"xpp3_min-1.1.4c.jar",这是一个小型版本的XML Pull Processing(XPULL)库,名为XPP3。XPP3是用于读取XML流的轻量级解析器,它不需要DOM(文档对象模型)或SAX(简单API for XML)解析器。XPP3的主要特点有...

    xpp3-1.1.4-min.jar

    这个小型的JAR文件包含了XPP3解析器的精简版,旨在提供一个备用的、高效的XML解析机制,以确保XStream能正常运行,即使在面对挑战性的情况时也能保持稳定。 XPP3采用了XML拉式解析(Pull Parsing)模式,与传统的推...

    xpp3-1.1.4c-API文档-中英对照版.zip

    赠送jar包:xpp3-1.1.4c.jar; 赠送原API文档:xpp3-1.1.4c-javadoc.jar; 赠送源代码:xpp3-1.1.4c-sources.jar; 赠送Maven依赖信息文件:xpp3-1.1.4c.pom; 包含翻译后的API文档:xpp3-1.1.4c-javadoc-API文档-...

    xstream-1.4.2.jar和xpp3_min-1.1.4c.jar包

    XStream简化了对象和XML之间的转换,而XPP3则提供了一个快速且低内存占用的XML解析器。如果你需要在Java项目中处理XML,这两个库是值得考虑的。在使用前,确保正确地导入它们,并根据项目需求配置好相应的安全设置。

    xpp3_min-1.1.4c.jar.zip

    总的来说,"xpp3_min-1.1.4c.jar.zip"是一个包含XPP3解析器的小型化版本,用于支持XStream库在Java项目中高效地处理XML数据。XStream的易用性和灵活性使得它在处理Java对象与XML之间的转换时成为了一个受欢迎的选择...

    xstream-1.3.1.jar&xpp3;_min-1.1.4c.jar

    XPP3(XML Pull Processing Library version 3)是一个轻量级的XML解析器,它实现了XML Pull API。在Java中,XPP3作为解析XML文档的一种高效方式,比DOM(Document Object Model)和SAX(Simple API for XML)更节省...

    将对象生成xml的jar包,xstream-1.4.2,xmlpull-1.1.3.1,xpp3_min-1.1.4c

    **XPP3_min 1.1.4c** 是一个基于Pull解析器的XML解析库,它是XPack项目的一部分,适用于Android和Java平台。XPP3提供了一个轻量级、高性能的XML解析器,可以与XMLPull API一起使用。XPP3_min是XPP3的一个精简版本,...

    XPP3解析XML举例

    MyXmlPullApp.java 一个使用XPP3解析XML的例子。 An example of an application that uses XMLPULL V1 API.

    XML解析方式对比(含XPP3解析)

    XPP3是一个高性能的XML Pull解析器,它基于PULL解析模型,提供了比SAX更简洁的API,同时在性能上优于DOM。XPP3的核心是它的解析器实现,名为XPP3_min,这个版本优化了内存使用,适合处理大型XML文件。另外,xpp3_...

    xpp3_min-1.1.4c-API文档-中文版.zip

    赠送jar包:xpp3_min-1.1.4c.jar; 赠送原API文档:xpp3_min-1.1.4c-javadoc.jar; 赠送源代码:xpp3_min-1.1.4c-sources.jar; 赠送Maven依赖信息文件:xpp3_min-1.1.4c.pom; 包含翻译后的API文档:xpp3_min-1.1.4...

    xpp3-1.1.5.jar

    其中,xpp3是一个著名的开源XML解析器,而xpp3-1.1.5.jar则是这个解析器的一个版本。本文将详细介绍xpp3-1.1.5.jar的特性、工作原理及其在实际应用中的价值。 xpp3全称为“XML Pull Parser for Java”,它是一种...

    xpp3_min-1.1.4c.jar

    xpp3_min-1.1.4c.jar,xstream实例见http://download.csdn.net/detail/jnsunw/3750332

    java解析XML所需要的完整包(包括XStream.jar,dom4j.jar和xpull/xpp.jar)

    DOM4J是一个非常灵活的用于处理XML的Java库,它是基于DOM(Document Object Model)模型的,但提供了比标准DOM更多的功能。DOM4J提供了一种简单而高效的方式来创建、修改和查询XML文档。它支持XPath表达式,可以...

    jar包下载xpp3

    XPP3的设计理念是基于事件驱动的,即在解析XML文档的过程中,每当遇到XML的元素、属性或其他结构时,都会触发一个事件。开发者可以通过注册事件处理器来响应这些事件,从而实现对XML数据的解析和处理。这种方式避免...

    xpp3_min-1.1.4.zip

    “xpp3_min”这个名字暗示这是一个轻量级的解析器,可能用于处理XML数据。XPP3(XML Pull Parser for Java version 3)是一个高性能、轻量级的XML解析库,它实现了XML 1.0和1.1的pull解析API。Pull解析API允许开发者...

    xpp3_min-1.1.4c-API文档-中英对照版.zip

    赠送jar包:xpp3_min-1.1.4c.jar; 赠送原API文档:xpp3_min-1.1.4c-javadoc.jar; 赠送源代码:xpp3_min-1.1.4c-sources.jar; 赠送Maven依赖信息文件:xpp3_min-1.1.4c.pom; 包含翻译后的API文档:xpp3_min-1.1.4...

    xmlpull.jar和xpp3_min-1.1.4c.jar以及xstream-1.4.2.jar

    XPP3是XML Pull解析器的一个实现,它基于XMLPullParser API,并提供了更丰富的功能和更好的性能。XPP3_min-1.1.4c.jar是XPP3的一个精简版本,包含必要的类和方法,用于处理XML输入流。它支持处理命名空间、处理指令...

    xpp3_min-1.1.4c

    xpp3_min-1.1.4c, xstream 使用

Global site tag (gtag.js) - Google Analytics