Android 시스템에서 XML 파일 분석 방법
Android의 Framework 레이어 원본을 학습할 때 Android는 XmlPullParser를 대량으로 사용하여 xml 파일의 원본을 해석합니다.따라서 여기서도 XmlPullParser의 사용을 소개합니다.
XML
XML(eXtensible Markup Language)의 중국어 이름은 확장 가능한 태그 언어입니다.표기는 컴퓨터가 이해할 수 있는 정보 기호를 가리키며, 이 표기를 통해 컴퓨터 간에 각종 정보를 포함하는 문장 등을 처리할 수 있다.
용도
XML 디자인은 데이터 정보를 전송하고 휴대하는데 표현이나 전시 데이터를 사용하지 않고 HTML 언어는 표현 데이터를 사용하기 때문에 XML의 용도의 초점은 데이터가 무엇인지 설명하고 데이터 정보를 휴대하는 것이다.
각 XML 문서는 XML 서문으로 시작하며 앞의 코드에서 첫 번째 줄은 XML 서문입니다. .이 행 코드는 해석기나 브라우저에서 이 파일이 XML 규칙에 따라 해석되어야 한다는 것을 알려 줍니다.그러나 루트 요소의 이름은 문서 유형 정의 또는 XML 개요에 의해 정의됩니다.
XmlPullParser
PULL 해석 xml은 이벤트 구동 방식을 바탕으로 XML 파일을 해석하는 것입니다.pull이 해석을 시작할 때 geteventType () 방법으로 현재 해석 이벤트 형식을 가져오고next () 방법으로 다음 해석 이벤트 형식을 가져올 수 있습니다.PULL 해상도는 START_DOCUMENT(시작 문서), END_DOCUMENT(문서 종료), START_TAG(시작 레이블), END_TAG(종료 레이블) 네 가지 이벤트 확인 유형입니다.어떤 요소에 있을 때, getAttributeValue () 방법으로 속성의 값을 가져오거나,nextText () 방법으로 이 노드의 텍스트 값을 가져올 수 있습니다.다음은 하나의 예를 통해 해석한다.
xml 예시 파일
분석이 필요한 xml 예제 파일 코드는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<colleagues>
<colleague id="1">
<name> </name>
<age>24</age>
<sex>boy</sex>
</colleague>
<colleague id="2">
<name> </name>
<age>28</age>
<sex>girl</sex>
</colleague>
<colleague id="3">
<name> </name>
<age>26</age>
<sex>boy</sex>
</colleague>
</colleagues>
XmlPullParser 해상도
package com.example.shakedemo;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.R.xml;
import android.util.Log;
import android.util.Xml;
public class XmlPullParserHelper {
public static List<Colleague> getColleagues(String xmlFilePath) {
List<Colleague> colleagues = new ArrayList<Colleague>();
FileReader xmlReader = null;
try {
xmlReader = new FileReader(new File(xmlFilePath));
} catch (FileNotFoundException e) {
Log.e("wzy", "Couldn't find xml file " + xmlFilePath);
return colleagues;
}
try {
// 1: Android android.util.Xml parser
XmlPullParser parser = Xml.newPullParser();
// 2: XmlPullParserFactory
// XmlPullParserFactory pullFactory =
// XmlPullParserFactory.newInstance();
// XmlPullParser parser = pullFactory.newPullParser();
//
parser.setInput(xmlReader);
//
int eventType = parser.getEventType();
Colleague colleague = null;
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
/**
* getName , nextText ,
* getAttributeValue(i)
*/
String name = parser.getName();
if ("colleague".equals(name)) {
colleague = new Colleague();
colleague.setId(Integer.parseInt(parser.getAttributeValue(null, "id")));
} else if ("name".equals(name)) {
if (colleague != null) {
colleague.setName(parser.nextText());
}
} else if ("age".equals(name)) {
if (colleague != null) {
colleague.setAge(Integer.parseInt(parser.nextText()));
}
} else if ("sex".equals(name)) {
if (colleague != null) {
colleague.setSex(parser.nextText());
}
}
break;
case XmlPullParser.END_TAG:
if ("colleague".equals(parser.getName()) && colleague != null) {
colleagues.add(colleague);
colleague = null;
}
break;
}
eventType = parser.next();
}
xmlReader.close();
} catch (XmlPullParserException e) {
// Do nothing
} catch (IOException e) {
// Do nothing
}
return colleagues;
}
}
그 중에서 colleague 클래스의 정의는 비교적 간단하다. 코드는 다음과 같다.
package com.example.shakedemo;
public class Colleague {
private int id;
private int age;
private String name;
private String sex;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "ID is " + id + ", Name is " + name + ", Sex is " + sex;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.