Android 풀 구문 분석 xml 방법
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字,
读取到xml的声明返回数字0 START_DOCUMENT;
读取到xml的结束返回数字1 END_DOCUMENT ;
读取到xml的开始标签返回数字2 START_TAG
读取到xml的结束标签返回数字3 END_TAG
读取到xml的文本返回数字4 TEXT
pull是开源的项目 源码下载地址http://www.php.cn/
被解析的xml文档和android dom 解析xml方式 中的xml文档一样,命名为pullTest.xml.
private String pullParseXml(InputStream inputStream) { String result = ""; //解析全部的xml boolean isParse = true; try { // 创建一个xmlPullParser的工厂 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // 获取一个解析实例 XmlPullParser parse = factory.newPullParser(); // 设置输入流的编码格式 parse.setInput(inputStream, "UTF-8"); // 当前事件的类型 int eventType = parse.getEventType(); while (XmlPullParser.END_DOCUMENT != eventType) { // 当前节点的名称 String nodeName = parse.getName(); switch (eventType) { case XmlPullParser.START_TAG: if ("group".equals(nodeName)) { // 解析<group>节点中的属性值,getAttributeCount()获取属性的个数 for (int i = 0; i < parse.getAttributeCount(); i++) { // 属性名称 String groupName = parse.getAttributeName(i); // 属性名称对应的值 String nameValue = parse.getAttributeValue(i); result = result + groupName + " = " + nameValue; } result += "\n"; } else if ("person".equals(nodeName)) { String personName = parse.getAttributeValue(0); String age = parse.getAttributeValue(1); result = result + "personName = " + personName + "age =" + age + "\n"; } else if ("chinese".equals(nodeName)) { //节点对应的文本 String chinese = parse.nextText(); Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(chinese); chinese = m.replaceAll(""); result = result + "chinese = " + chinese; } else if ("english".equals(nodeName)) { String english = parse.nextText(); Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(english); english = m.replaceAll(""); result = result + "english = " + english + "\n"; } break; case XmlPullParser.END_TAG: //在解析到一个group节点完成时,退出解析xml文件 // if("group".equals(nodeName)){ // eventType = XmlPullParser.END_DOCUMENT; // isParse = false; // } break; default: break; } //整个xml文件全部解析 if(isParse){ eventType = parse.next(); } } } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; }
pull和sax不同最主要的体现在pull可以由客户随时终止解析xml.sax解析,只能从文档头一直读到尾,中间不能停止也不能对文件进行修改。直到解析完了整个文档才会返回。
//在解析到一个group节点完成时,退出解析xml文件 // if("group".equals(nodeName)){ // eventType = XmlPullParser.END_DOCUMENT; // isParse = false; // }
只要满足退出解析的条件,只需要设置如下代码即可。
eventType = XmlPullParser.END_DOCUMENT;
pull解析方式用到的方法,大部分我都在代码中注释了。
以上就是android pull 解析xml方式 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











최근 아이스 유니버스는 삼성의 차기 플래그십 스마트폰으로 널리 알려진 갤럭시 S25 울트라에 대한 세부 정보를 꾸준히 공개해 왔습니다. 무엇보다도 유출자는 삼성이 카메라 업그레이드를 하나만 가져올 계획이라고 주장했습니다.

OnLeaks는 이제 Android Headlines와 제휴하여 X(이전 Twitter) 팔로어로부터 4,000달러 이상의 수익을 창출하려는 시도가 실패한 지 며칠 후 Galaxy S25 Ultra에 대한 첫 번째 모습을 제공합니다. 맥락에 따라 h 아래에 포함된 렌더링 이미지

TCL은 두 가지 새로운 스마트폰을 발표하는 것과 함께 NXTPAPER 14라는 새로운 Android 태블릿도 발표했는데, TCL의 거대한 화면 크기는 판매 포인트 중 하나입니다. NXTPAPER 14는 TCL의 시그니처 브랜드인 무광택 LCD 패널 버전 3.0을 갖추고 있습니다.

Vivo Y300 Pro는 방금 완전히 공개되었으며 대용량 배터리를 갖춘 가장 얇은 중급 Android 휴대폰 중 하나입니다. 정확히 말하면 스마트폰의 두께는 7.69mm에 불과하지만 배터리 용량은 6,500mAh입니다. 최근 출시된 것과 동일한 용량이다.

삼성전자는 팬에디션(FE) 스마트폰 시리즈를 언제 업데이트할지 아직 힌트를 주지 않았다. 현재 상태로 Galaxy S23 FE는 2023년 10월 초에 출시된 회사의 최신 버전으로 남아 있습니다.

최근 아이스 유니버스는 삼성의 차기 플래그십 스마트폰으로 널리 알려진 갤럭시 S25 울트라에 대한 세부 정보를 꾸준히 공개해 왔습니다. 무엇보다도 유출자는 삼성이 카메라 업그레이드를 하나만 가져올 계획이라고 주장했습니다.

Redmi Note 14 Pro Plus는 이제 작년 Redmi Note 13 Pro Plus(Amazon에서 현재 $375)의 직접적인 후속 제품으로 공식화되었습니다. 예상대로 Redmi Note 14 Pro Plus는 Redmi Note 14 및 Redmi Note 14 Pro와 함께 Redmi Note 14 시리즈를 주도합니다. 리

OnePlus의 자매 브랜드 iQOO는 2023-4년 제품 주기가 거의 끝날 수 있습니다. 그럼에도 불구하고 브랜드는 Z9 시리즈가 아직 끝나지 않았다고 선언했습니다. 최종이자 아마도 최고급인 Turbo+ 변형이 예상대로 발표되었습니다. 티
