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

前端之家收集整理的这篇文章主要介绍了XPP3-一个非常快的XML解析器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1、XPP3 也叫MXP1

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

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

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

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

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

http://www.xmlpull.org/

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


MyXmlPull.java

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

[java] view plain copy
  1. import@H_403_5@java.io.FileReader;@H_403_5@@H_403_5@
  2. import@H_403_5@java.io.IOException;@H_403_5@@H_403_5@
  3. import@H_403_5@java.io.StringReader;@H_403_5@@H_403_5@
  4. @H_403_5@
  5. import@H_403_5@org.xmlpull.v1.XmlPullParser;@H_403_5@@H_403_5@
  6. import@H_403_5@org.xmlpull.v1.XmlPullParserException;@H_403_5@@H_403_5@
  7. import@H_403_5@org.xmlpull.v1.XmlPullParserFactory;@H_403_5@@H_403_5@
  8. /**@H_403_5@@H_403_5@
  9. *AnexampleofanapplicationthatusesXMLPULLV1API.@H_403_5@@H_403_5@
  10. *@H_403_5@@H_403_5@
  11. *@author<ahref="http://www.extreme.indiana.edu/~aslom/">AleksanderSlominski</a>@H_403_5@@H_403_5@
  12. */@H_403_5@@H_403_5@@H_403_5@
  13. public@H_403_5@@H_403_5@class@H_403_5@MyXmlPullApp@H_403_5@@H_403_5@
  14. {@H_403_5@
  15. public@H_403_5@@H_403_5@final@H_403_5@@H_403_5@static@H_403_5@StringSAMPLE_XML=@H_403_5@@H_403_5@
  16. "<?xmlversion=\"1.0\"?>\n"@H_403_5@+@H_403_5@@H_403_5@
  17. "\n"@H_403_5@+@H_403_5@@H_403_5@
  18. "<poemxmlns=\"http://www.megginson.com/ns/exp/poetry\">\n"@H_403_5@+@H_403_5@@H_403_5@
  19. "<title>RosesareRed</title>\n"@H_403_5@+@H_403_5@@H_403_5@
  20. "<l>Rosesarered,</l>\n"@H_403_5@+@H_403_5@@H_403_5@
  21. "<l>Violetsareblue;</l>\n"@H_403_5@+@H_403_5@@H_403_5@
  22. "<l>Sugarissweet,108); border-left-width:3px"> "<l>AndIloveyou.</l>\n"@H_403_5@+@H_403_5@@H_403_5@
  23. "</poem>"@H_403_5@;@H_403_5@@H_403_5@
  24. @H_403_5@
  25. public@H_403_5@@H_403_5@static@H_403_5@@H_403_5@void@H_403_5@main(Stringargs[])@H_403_5@@H_403_5@
  26. throws@H_403_5@XmlPullParserException,IOException@H_403_5@@H_403_5@
  27. {@H_403_5@
  28. XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();@H_403_5@
  29. factory.setNamespaceAware(true@H_403_5@);@H_403_5@@H_403_5@
  30. XmlPullParserxpp=factory.newPullParser();@H_403_5@
  31. System.out.println("parserimplementationclassis"@H_403_5@+xpp.getClass());@H_403_5@@H_403_5@
  32. MyXmlPullAppapp=new@H_403_5@MyXmlPullApp();@H_403_5@@H_403_5@
  33. if@H_403_5@(args.length==@H_403_5@0@H_403_5@){@H_403_5@@H_403_5@
  34. System.out.println("ParsingsimplesampleXML"@H_403_5@);@H_403_5@//:\n"+SAMPLE_XML);@H_403_5@@H_403_5@@H_403_5@
  35. xpp.setInput(new@H_403_5@StringReader(SAMPLE_XML));@H_403_5@@H_403_5@
  36. app.processDocument(xpp);@H_403_5@
  37. }else@H_403_5@{@H_403_5@@H_403_5@
  38. for@H_403_5@(@H_403_5@int@H_403_5@i=@H_403_5@0@H_403_5@;i<args.length;i++){@H_403_5@@H_403_5@
  39. System.out.println("Parsingfile:"@H_403_5@+args[i]);@H_403_5@@H_403_5@
  40. xpp.setInput(new@H_403_5@FileReader(args[i]));@H_403_5@@H_403_5@
  41. app.processDocument(xpp);@H_403_5@
  42. }@H_403_5@
  43. }@H_403_5@
  44. public@H_403_5@@H_403_5@void@H_403_5@processDocument(XmlPullParserxpp)@H_403_5@@H_403_5@
  45. int@H_403_5@eventType=xpp.getEventType();@H_403_5@@H_403_5@
  46. do@H_403_5@{@H_403_5@@H_403_5@
  47. if@H_403_5@(eventType==xpp.START_DOCUMENT){@H_403_5@@H_403_5@
  48. System.out.println("Startdocument"@H_403_5@);@H_403_5@@H_403_5@
  49. }else@H_403_5@@H_403_5@if@H_403_5@(eventType==xpp.END_DOCUMENT){@H_403_5@@H_403_5@
  50. System.out.println("Enddocument"@H_403_5@);@H_403_5@@H_403_5@
  51. }else@H_403_5@@H_403_5@if@H_403_5@(eventType==xpp.START_TAG){@H_403_5@@H_403_5@
  52. processStartElement(xpp);@H_403_5@
  53. }else@H_403_5@@H_403_5@if@H_403_5@(eventType==xpp.END_TAG){@H_403_5@@H_403_5@
  54. processEndElement(xpp);@H_403_5@
  55. }else@H_403_5@@H_403_5@if@H_403_5@(eventType==xpp.TEXT){@H_403_5@@H_403_5@
  56. processText(xpp);@H_403_5@
  57. eventType=xpp.next();@H_403_5@
  58. }while@H_403_5@(eventType!=xpp.END_DOCUMENT);@H_403_5@@H_403_5@
  59. public@H_403_5@@H_403_5@void@H_403_5@processStartElement(XmlPullParserxpp)@H_403_5@@H_403_5@
  60. Stringname=xpp.getName();@H_403_5@
  61. Stringuri=xpp.getNamespace();@H_403_5@
  62. if@H_403_5@(@H_403_5@""@H_403_5@.equals(uri)){@H_403_5@@H_403_5@
  63. System.out.println("Startelement:"@H_403_5@+name);@H_403_5@@H_403_5@
  64. }else@H_403_5@{@H_403_5@@H_403_5@
  65. System.out.println("Startelement:{"@H_403_5@+uri+@H_403_5@"}"@H_403_5@+name);@H_403_5@@H_403_5@
  66. public@H_403_5@@H_403_5@void@H_403_5@processEndElement(XmlPullParserxpp)@H_403_5@@H_403_5@
  67. if@H_403_5@(@H_403_5@""@H_403_5@.equals(uri))@H_403_5@@H_403_5@
  68. System.out.println("Endelement:"@H_403_5@+name);@H_403_5@@H_403_5@
  69. else@H_403_5@@H_403_5@@H_403_5@
  70. System.out.println("Endelement:{"@H_403_5@+uri+@H_403_5@"}"@H_403_5@+name);@H_403_5@@H_403_5@
  71. int@H_403_5@holderForStartAndLength[]=@H_403_5@new@H_403_5@@H_403_5@int@H_403_5@[@H_403_5@2@H_403_5@];@H_403_5@@H_403_5@
  72. public@H_403_5@@H_403_5@void@H_403_5@processText(XmlPullParserxpp)@H_403_5@throws@H_403_5@XmlPullParserException@H_403_5@@H_403_5@
  73. char@H_403_5@ch[]=xpp.getTextCharacters(holderForStartAndLength);@H_403_5@@H_403_5@
  74. int@H_403_5@start=holderForStartAndLength[@H_403_5@0@H_403_5@];@H_403_5@@H_403_5@
  75. int@H_403_5@length=holderForStartAndLength[@H_403_5@1@H_403_5@];@H_403_5@@H_403_5@
  76. System.out.print("Characters:\""@H_403_5@);@H_403_5@@H_403_5@
  77. for@H_403_5@(@H_403_5@int@H_403_5@i=start;i<start+length;i++){@H_403_5@@H_403_5@
  78. switch@H_403_5@(ch[i]){@H_403_5@@H_403_5@
  79. case@H_403_5@@H_403_5@'\\'@H_403_5@:@H_403_5@@H_403_5@
  80. System.out.print("\\\\"@H_403_5@);@H_403_5@@H_403_5@
  81. break@H_403_5@;@H_403_5@@H_403_5@
  82. case@H_403_5@@H_403_5@'"'@H_403_5@:@H_403_5@@H_403_5@
  83. System.out.print("\\\""@H_403_5@);@H_403_5@@H_403_5@
  84. break@H_403_5@;@H_403_5@@H_403_5@
  85. case@H_403_5@@H_403_5@'\n'@H_403_5@:@H_403_5@@H_403_5@
  86. System.out.print("\\n"@H_403_5@);@H_403_5@@H_403_5@
  87. case@H_403_5@@H_403_5@'\r'@H_403_5@:@H_403_5@@H_403_5@
  88. System.out.print("\\r"@H_403_5@);@H_403_5@@H_403_5@
  89. case@H_403_5@@H_403_5@'\t'@H_403_5@:@H_403_5@@H_403_5@
  90. System.out.print("\\t"@H_403_5@);@H_403_5@@H_403_5@
  91. default@H_403_5@:@H_403_5@@H_403_5@
  92. System.out.print(ch[i]);@H_403_5@
  93. System.out.print("\"\n"@H_403_5@);@H_403_5@@H_403_5@
  94. }@H_403_5@

猜你在找的XML相关文章