android 플랫폼에서 xml 파일 분석:SAX,PULL

9784 단어 android
SAX는 이벤트 분석 메커니즘을 이용하여 메모리를 매우 적게 차지하여 휴대전화 등 모바일 기기에 매우 적합하다.SAX는 이벤트
드라이버, 이벤트는 ContentHandler 인터페이스에 정의되어 있으며, ContentHandler에서 자주 사용하는 방법은 다음과 같습니다.
//텍스트 노드 처리
•characters(char[] ch, int start, int length)
//노드 종료 시 트리거
•endElement(String uri, String localName, String qName)
//문서를 시작할 때 트리거
•startDocument()
//노드를 분석할 때 트리거 (qName: 이름 공간 접두사가 있는 탭 이름)
•startElement(String uri, String localName, String qName, Attributes attributes)
//문서 종료 시 트리거
•endDocument()
해결 도구 클래스

   
     
public class XmlTool {
public static List < User > readXmlSAX(InputStream inputStream) throws Exception{
SAXParserFactory factory
= SAXParserFactory.newInstance();
SAXParser parser
= factory.newSAXParser();
MyDefaultHandler defaultHandler
= new XmlTool().init();
parser.parse(inputStream, defaultHandler);
inputStream.close();
return defaultHandler.getUsers();
}
public MyDefaultHandler init(){
return new MyDefaultHandler();
}

public class MyDefaultHandler extends DefaultHandler{
private List < User > users;
private User user;
private String content;

public List < User > getUsers() {
return users;
}
@Override
public void characters( char [] ch, int start, int length)
throws SAXException {
super .characters(ch, start, length);
content
= new String(ch,start,length);
}
@Override
public void startDocument() throws SAXException {
users
= new ArrayList < User > ();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes)
throws SAXException {
super .startElement(uri, localName, qName, attributes);
if ( " user " .equals(localName)){
user
= new User();
user.setId(Integer.parseInt(attributes.getValue(
" id " )));
}
}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
super .endElement(uri, localName, qName);
if ( " name " .equals(localName)){
user.setName(content);
}
else if ( " password " .equals(localName)){
user.setPassword(content);
}
else if ( " user " .equals(localName)){
users.add(user);
}
}
}
}

SAX 해석 xml 파일 외에도 PULL 해석기를 사용할 수 있습니다.안드로이드 시스템
Pull 파서가 내장되어 있습니다.Pull 파서도 이벤트 해석을 사용합니다.
Pull 파서의 주요 이벤트 및 방법
XmlPullParser parser = Xml.newPullParser();//pull 해상도 가져오기
parser.setInput(fileInputStream, “utf-8”);//xml 문서를 흐르는 형식으로 해석기에 전달하다
int eventCode = parser.getEventType();//해석 이벤트가 되돌아오는 코드 가져오기
XmlPullParser.START_DOCUMENT//시작 문서
XmlPullParser.END_DOCUMENT//끝 문서
XmlPullParser.START_TAG//시작 노드
XmlPullParser.END_TAG//끝 노드
eventCode = parser.next();//다음 노드 해결
parser.getName()//노드 이름 가져오기
parser.getattributeValue(null, id)//노드 속성 얻기
parser.nextText()//test 텍스트 값 가져오기

좋은 웹페이지 즐겨찾기