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 比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@
使用举例:@H_403_5@http://www.xmlpull.org/v1/download/unpacked/doc/quick_intro.html
MyXmlPull.java
============
- import@H_403_5@java.io.FileReader;@H_403_5@@H_403_5@
- import@H_403_5@java.io.IOException;@H_403_5@@H_403_5@
- import@H_403_5@java.io.StringReader;@H_403_5@@H_403_5@
- @H_403_5@
- import@H_403_5@org.xmlpull.v1.XmlPullParser;@H_403_5@@H_403_5@
- import@H_403_5@org.xmlpull.v1.XmlPullParserException;@H_403_5@@H_403_5@
- import@H_403_5@org.xmlpull.v1.XmlPullParserFactory;@H_403_5@@H_403_5@
- /**@H_403_5@@H_403_5@
- *AnexampleofanapplicationthatusesXMLPULLV1API.@H_403_5@@H_403_5@
- *@H_403_5@@H_403_5@
- *@author<ahref="http://www.extreme.indiana.edu/~aslom/">AleksanderSlominski</a>@H_403_5@@H_403_5@
- */@H_403_5@@H_403_5@@H_403_5@
- public@H_403_5@@H_403_5@class@H_403_5@MyXmlPullApp@H_403_5@@H_403_5@
- {@H_403_5@
- 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@
- "<?xmlversion=\"1.0\"?>\n"@H_403_5@+@H_403_5@@H_403_5@
- "\n"@H_403_5@+@H_403_5@@H_403_5@
- "<poemxmlns=\"http://www.megginson.com/ns/exp/poetry\">\n"@H_403_5@+@H_403_5@@H_403_5@
- "<title>RosesareRed</title>\n"@H_403_5@+@H_403_5@@H_403_5@
- "<l>Rosesarered,</l>\n"@H_403_5@+@H_403_5@@H_403_5@
- "<l>Violetsareblue;</l>\n"@H_403_5@+@H_403_5@@H_403_5@
- "<l>Sugarissweet,108); border-left-width:3px"> "<l>AndIloveyou.</l>\n"@H_403_5@+@H_403_5@@H_403_5@
- "</poem>"@H_403_5@;@H_403_5@@H_403_5@
- @H_403_5@
- 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@
- throws@H_403_5@XmlPullParserException,IOException@H_403_5@@H_403_5@
- {@H_403_5@
- XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();@H_403_5@
- factory.setNamespaceAware(true@H_403_5@);@H_403_5@@H_403_5@
- XmlPullParserxpp=factory.newPullParser();@H_403_5@
- System.out.println("parserimplementationclassis"@H_403_5@+xpp.getClass());@H_403_5@@H_403_5@
- MyXmlPullAppapp=new@H_403_5@MyXmlPullApp();@H_403_5@@H_403_5@
- if@H_403_5@(args.length==@H_403_5@0@H_403_5@){@H_403_5@@H_403_5@
- System.out.println("ParsingsimplesampleXML"@H_403_5@);@H_403_5@//:\n"+SAMPLE_XML);@H_403_5@@H_403_5@@H_403_5@
- xpp.setInput(new@H_403_5@StringReader(SAMPLE_XML));@H_403_5@@H_403_5@
- app.processDocument(xpp);@H_403_5@
- }else@H_403_5@{@H_403_5@@H_403_5@
- 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@
- System.out.println("Parsingfile:"@H_403_5@+args[i]);@H_403_5@@H_403_5@
- xpp.setInput(new@H_403_5@FileReader(args[i]));@H_403_5@@H_403_5@
- app.processDocument(xpp);@H_403_5@
- }@H_403_5@
- }@H_403_5@
- public@H_403_5@@H_403_5@void@H_403_5@processDocument(XmlPullParserxpp)@H_403_5@@H_403_5@
- int@H_403_5@eventType=xpp.getEventType();@H_403_5@@H_403_5@
- do@H_403_5@{@H_403_5@@H_403_5@
- if@H_403_5@(eventType==xpp.START_DOCUMENT){@H_403_5@@H_403_5@
- System.out.println("Startdocument"@H_403_5@);@H_403_5@@H_403_5@
- }else@H_403_5@@H_403_5@if@H_403_5@(eventType==xpp.END_DOCUMENT){@H_403_5@@H_403_5@
- System.out.println("Enddocument"@H_403_5@);@H_403_5@@H_403_5@
- }else@H_403_5@@H_403_5@if@H_403_5@(eventType==xpp.START_TAG){@H_403_5@@H_403_5@
- processStartElement(xpp);@H_403_5@
- }else@H_403_5@@H_403_5@if@H_403_5@(eventType==xpp.END_TAG){@H_403_5@@H_403_5@
- processEndElement(xpp);@H_403_5@
- }else@H_403_5@@H_403_5@if@H_403_5@(eventType==xpp.TEXT){@H_403_5@@H_403_5@
- processText(xpp);@H_403_5@
- eventType=xpp.next();@H_403_5@
- }while@H_403_5@(eventType!=xpp.END_DOCUMENT);@H_403_5@@H_403_5@
- public@H_403_5@@H_403_5@void@H_403_5@processStartElement(XmlPullParserxpp)@H_403_5@@H_403_5@
- Stringname=xpp.getName();@H_403_5@
- Stringuri=xpp.getNamespace();@H_403_5@
- if@H_403_5@(@H_403_5@""@H_403_5@.equals(uri)){@H_403_5@@H_403_5@
- System.out.println("Startelement:"@H_403_5@+name);@H_403_5@@H_403_5@
- }else@H_403_5@{@H_403_5@@H_403_5@
- System.out.println("Startelement:{"@H_403_5@+uri+@H_403_5@"}"@H_403_5@+name);@H_403_5@@H_403_5@
- public@H_403_5@@H_403_5@void@H_403_5@processEndElement(XmlPullParserxpp)@H_403_5@@H_403_5@
- if@H_403_5@(@H_403_5@""@H_403_5@.equals(uri))@H_403_5@@H_403_5@
- System.out.println("Endelement:"@H_403_5@+name);@H_403_5@@H_403_5@
- else@H_403_5@@H_403_5@@H_403_5@
- System.out.println("Endelement:{"@H_403_5@+uri+@H_403_5@"}"@H_403_5@+name);@H_403_5@@H_403_5@
- 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@
- 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@
- char@H_403_5@ch[]=xpp.getTextCharacters(holderForStartAndLength);@H_403_5@@H_403_5@
- int@H_403_5@start=holderForStartAndLength[@H_403_5@0@H_403_5@];@H_403_5@@H_403_5@
- int@H_403_5@length=holderForStartAndLength[@H_403_5@1@H_403_5@];@H_403_5@@H_403_5@
- System.out.print("Characters:\""@H_403_5@);@H_403_5@@H_403_5@
- for@H_403_5@(@H_403_5@int@H_403_5@i=start;i<start+length;i++){@H_403_5@@H_403_5@
- switch@H_403_5@(ch[i]){@H_403_5@@H_403_5@
- case@H_403_5@@H_403_5@'\\'@H_403_5@:@H_403_5@@H_403_5@
- System.out.print("\\\\"@H_403_5@);@H_403_5@@H_403_5@
- break@H_403_5@;@H_403_5@@H_403_5@
- case@H_403_5@@H_403_5@'"'@H_403_5@:@H_403_5@@H_403_5@
- System.out.print("\\\""@H_403_5@);@H_403_5@@H_403_5@
- break@H_403_5@;@H_403_5@@H_403_5@
- case@H_403_5@@H_403_5@'\n'@H_403_5@:@H_403_5@@H_403_5@
- System.out.print("\\n"@H_403_5@);@H_403_5@@H_403_5@
- case@H_403_5@@H_403_5@'\r'@H_403_5@:@H_403_5@@H_403_5@
- System.out.print("\\r"@H_403_5@);@H_403_5@@H_403_5@
- case@H_403_5@@H_403_5@'\t'@H_403_5@:@H_403_5@@H_403_5@
- System.out.print("\\t"@H_403_5@);@H_403_5@@H_403_5@
- default@H_403_5@:@H_403_5@@H_403_5@
- System.out.print(ch[i]);@H_403_5@
- System.out.print("\"\n"@H_403_5@);@H_403_5@@H_403_5@
- }@H_403_5@