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/

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

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

[java]  view plain copy
  1. import java.io.FileReader;
  2. import java.io.IOException;
  3. import java.io.StringReader;
  4. import org.xmlpull.v1.XmlPullParser;
  5. import org.xmlpull.v1.XmlPullParserException;
  6. import org.xmlpull.v1.XmlPullParserFactory;
  7. /**
  8. * An example of an application that uses XMLPULL V1 API.
  9. *
  10. * @author <a href="http://www.extreme.indiana.edu/~aslom/">Aleksander Slominski</a>
  11. */
  12. public class MyXmlPullApp
  13. {
  14. public final static String SAMPLE_XML =
  15. "<?xml version=\"1.0\"?>\n"+
  16. "\n"+
  17. "<poem xmlns=\"http://www.megginson.com/ns/exp/poetry\">\n"+
  18. "<title>Roses are Red</title>\n"+
  19. "<l>Roses are red,</l>\n"+
  20. "<l>Violets are blue;</l>\n"+
  21. "<l>Sugar is sweet,</l>\n"+
  22. "<l>And I love you.</l>\n"+
  23. "</poem>";
  24. public static void main (String args[])
  25. throws XmlPullParserException, IOException
  26. {
  27. XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
  28. factory.setNamespaceAware(true);
  29. XmlPullParser xpp = factory.newPullParser();
  30. System.out.println("parser implementation class is "+xpp.getClass());
  31. MyXmlPullApp app = new MyXmlPullApp();
  32. if(args.length == 0) {
  33. System.out.println("Parsing simple sample XML");//:\n"+ SAMPLE_XML);
  34. xpp.setInput( new StringReader( SAMPLE_XML ) );
  35. app.processDocument(xpp);
  36. } else {
  37. for (int i = 0; i < args.length; i++) {
  38. System.out.println("Parsing file: "+args[i]);
  39. xpp.setInput ( new FileReader ( args [i] ) );
  40. app.processDocument(xpp);
  41. }
  42. }
  43. }
  44. public void processDocument(XmlPullParser xpp)
  45. throws XmlPullParserException, IOException
  46. {
  47. int eventType = xpp.getEventType();
  48. do {
  49. if(eventType == xpp.START_DOCUMENT) {
  50. System.out.println("Start document");
  51. } else if(eventType == xpp.END_DOCUMENT) {
  52. System.out.println("End document");
  53. } else if(eventType == xpp.START_TAG) {
  54. processStartElement(xpp);
  55. } else if(eventType == xpp.END_TAG) {
  56. processEndElement(xpp);
  57. } else if(eventType == xpp.TEXT) {
  58. processText(xpp);
  59. }
  60. eventType = xpp.next();
  61. } while (eventType != xpp.END_DOCUMENT);
  62. }
  63. public void processStartElement (XmlPullParser xpp)
  64. {
  65. String name = xpp.getName();
  66. String uri = xpp.getNamespace();
  67. if ("".equals (uri)) {
  68. System.out.println("Start element: " + name);
  69. } else {
  70. System.out.println("Start element: {" + uri + "}" + name);
  71. }
  72. }
  73. public void processEndElement (XmlPullParser xpp)
  74. {
  75. String name = xpp.getName();
  76. String uri = xpp.getNamespace();
  77. if ("".equals (uri))
  78. System.out.println("End element: " + name);
  79. else
  80. System.out.println("End element:   {" + uri + "}" + name);
  81. }
  82. int holderForStartAndLength[] = new int[2];
  83. public void processText (XmlPullParser xpp) throws XmlPullParserException
  84. {
  85. char ch[] = xpp.getTextCharacters(holderForStartAndLength);
  86. int start = holderForStartAndLength[0];
  87. int length = holderForStartAndLength[1];
  88. System.out.print("Characters:    \"");
  89. for (int i = start; i < start + length; i++) {
  90. switch (ch[i]) {
  91. case '\\':
  92. System.out.print("\\\\");
  93. break;
  94. case '"':
  95. System.out.print("\\\"");
  96. break;
  97. case '\n':
  98. System.out.print("\\n");
  99. break;
  100. case '\r':
  101. System.out.print("\\r");
  102. break;
  103. case '\t':
  104. System.out.print("\\t");
  105. break;
  106. default:
  107. System.out.print(ch[i]);
  108. break;
  109. }
  110. }
  111. System.out.print("\"\n");
  112. }
  113. }

XPP3-一个非常快的XML解析器相关推荐

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

    alfresco用到了大量的第三方的工具或者项目.本文列举并介绍这些项目和工具,以便在使用和分析alfresco的时候能够有一些帮助. 1.XPP3 也叫 MXP1 XPP -- XML Pull P ...

  2. TinyXML:一个优秀的C++ XML解析器

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...

  3. Phinecos(洞庭散人) 专注于开源技术的研究与应用 TinyXML:一个优秀的C++ XML解析器

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...

  4. Java XML解析器

    使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...

  5. 自己动手实现一个简单的JSON解析器

    1. 背景 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着诸多优点.比如易读性更好,占用空间更少等.在 ...

  6. json string 格式_自己动手实现一个简单的JSON解析器

    作者:田小波 原文:http://cnblogs.com/nullllun/p/8358146.html 1. 背景 JSON(JavaScript Object Notation) 是一种轻量级的数 ...

  7. 先弄个XML解析器代码抄一抄 慢慢研究 O(∩_∩)O哈哈~

     出处:http://bbs.csdn.net/topics/390229172 已经自我放逐好几年了.打算去上班得了.在最后的自由日子里,做点有意义的事吧... 先来下载地址    http:/ ...

  8. java xml解析器_Java XML解析器

    java xml解析器 Java XML parser is used to work with xml data. XML is widely used technology to transpor ...

  9. Android XML解析器– XMLPullParser

    Welcome to android xml parser example using XMLPullParser. We will have a sample XML file that we wi ...

最新文章

  1. python3 import execjs ModuleNotFoundError: No module named ‘execjs‘
  2. HDU - 6082 度度熊与邪恶大魔王(背包变式)
  3. (GO_GTD_1)基于OpenCV和QT,建立Android图像处理程序
  4. CPU资源和可用内存大小
  5. Redis从入门到精通:初级篇(转)
  6. 消息称AirPods 3搭载U1芯片 耳机柄变小
  7. MySql Workbench常用快捷键修改MySqlWorkBench快捷键
  8. 《Tensorflow 实战》(完整版,附源码)
  9. java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据
  10. android下载模块封装,AndroidStudio 3.0 NDK开发2-AAR模块封装
  11. 谷歌浏览器插件之广告净化器
  12. 计算机原理视频罗克露优酷,5IO系统-2中断-罗克露计算机组成原理课件(绝对与网上视频教程同步)...
  13. 添加用户-查看用户列表-禁止默认root登陆
  14. 进程管理工具-Supervisord +CeSi
  15. 华为模拟器eNSP基本命令
  16. R语言绘图、高清保存、以及颜色系统
  17. html年会抽奖代码实例,基于JavaScript实现简单抽奖功能代码实例
  18. c51单片机c语言程序,C51单片机的C语言程序设计.ppt
  19. Mac 微信多开的方法
  20. 《SMPTE 291M - 1998 辅助数据包与辅助空间格式化》 阅读整理

热门文章

  1. python 无法定位程序输入点ucrtbase_解决win7“无法定位程序输入点ucrtbase.abort于动态链接库”的方法...
  2. 换肤实例二,可扩展类型换肤库
  3. qt更新组件时,提示无法下载存档
  4. git删除与恢复错误删除、修改文件
  5. python实现颜色检测、轮廓检测、颜色追踪
  6. 实时数仓 | 京东计算架构演进之路
  7. 苑姓起源——古老而孤独
  8. Java向下转型的意义详解
  9. Excel创建sheet目录
  10. 2008全年最新电影预告