안녕하세요 푸민입니다.
저번 시간에 이어 Xml 파싱의 다른 방식에 대해서 알아보겠습니다.
이번에 알아볼 방법은 DOM 방식인데요. 우리가 아주 잘아는 트리구조로 문서를 변환해서 읽어오는 것입니다. DOM은 SAX에 비해 다 좋은데 하나 안좋은점이 있는것이 처음에 문저 전체를 변환하기 때문에 처음 변환할때 시간이 오래 걸립니다.
고로 아주 짧은 Xml 문서를 파싱하여 사용한다면 SAX 방식이 좋을 것이고, 조금이라도 큰 Xml 문서를 사용한다면 DOM 방식이 훨씬 좋습니다! 그리고 SAX는 각 이벤트를 하나씩 처리하는 반면에 DOM은 한번 변환하면 바로바로 사용할 수 있습니다.
안드로이드에서 DOM 파서 사용법을 한번 볼까요?
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
먼저 빌드팩토리를 만들고 팩토리를 만듭니다. 그리고나서 팩토리를 이용해 Xml 문서를 파싱합니다. DocumentBuilder 의 parse() 는 File 이 올 수 있고, Uri, InputStream 도 올 수 있습니다. 이렇게 Document 를 만들게 되면 필요한 엘리먼트를 검색해서 사용하면 됩니다.
doc.getDocumentElement().normalize();
normalize() 를 호출하면 Document 의 구조가 안정화됩니다.
NodeList nodeList = doc.getElementsByTagName("start");
NodeList 를 만들어 start (예를 든거에용. 필요한 엘리먼트를 찾아서 쓰시면 됩니다.) 라는 이름이 들어간 모든 엘리먼트를 리스트로 받습니다.
int count = nodeList.getLength();
for(int i = 0 ; i < count ; i++){
Node node = nodeList.item(i);
value = node.getChildNodes().item(1).getFirstChild().getNodeValue();
}
검색하여 결과 리스트만큼 for 문을 돌면서 각 값을 들고옵니다. 해당 노드에서 차일드 노드를 들고온 뒤 아이템을 꺼내서 처음 값을 꺼냅니다. 이렇게 사용하면 되고, Exception 이 뜰 수 있기 때문에 try 문으로 묶어줍니다.
'Development > Android' 카테고리의 다른 글
[안드로이드] Android 뷰이미지 캡처 (0) | 2015.10.01 |
---|---|
[안드로이드] Andorid Json 파싱 (0) | 2015.09.30 |
[안드로이드][XML] Xml 파싱 SAX XmlPullParser (0) | 2015.09.26 |
[안드로이드] 시간 카운트 하기 (0) | 2015.09.25 |
[안드로이드] Android ListView 속성값을 파헤쳐보자! (0) | 2015.09.24 |
댓글