-
xml 파싱의 종류와 장단점안드로이드(이클립스)/막 써 2016. 5. 2. 18:06반응형
Parsing이란 ?
컴퓨터에서 컴파일러 또는 번역기가 원시 부호를 기계어로 번역하는 과정의 한 단계로, 각 문장의 문법적인 구성 또는 구문을 분석하는 과정. 즉 원시 프로그램에서 나타난 토큰(token)의 열을 받아들여 이를 그 언어의 문법에 맞게 구문 분석 트리(parse tree)로 구성해 내는 일이다. 파싱은 크게 하향식 파싱과 상향식 파싱으로 나눌 수 있다.
[네이버 지식백과] 파싱 [parsing, 文章-分析] (IT용어사전, 한국정보통신기술협회)
parse(분석하다)
tree(나무가 하나의 뿌리(root)에서 줄기(trunk)가 나와 가지(branch)로 나누어지는 것과 같은 계층 구조)
내가 정리 쓴거 - 웹 서버에 있는 데이터를 tree구조로 받아 원하는 줄기와 가지를 찾는 일련의 과정
Parse 용어
<태그 이름> 데이터 </태그 이름> // 태그 이름의 시작과 끝으로 이루어 진걸 엘리먼트(Element)라고 함
<Element> Value </Element> // 영어로 표현
DOM(Document Object Model) Parser
장점 - 한번 파싱하면 언제든 읽을 수 있다
단점 - 한번 읽어서 사용하기 때문에 많은 정보를 읽어들일 경우에 시간이 걸린다
읽어들여야 할게 많을 경우에는 메모리를 많이 사용하기에 앱이 죽을 수 도 있다
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // Document를 생성할 Factory
DocumentBuilder builder = factory.newDocumentBuilder(); // Builder 객체를 생성하고.
InputStream istream = new ByteArrayInputStream(xmlStr.getBytes("utf-8")); // 서버로 부터 받은 string 형태의 xml데이터를 InputStream에 담는다.
Document doc = builder.parse(istream); // InputStream으로 Document를 생성한다.
Element order = doc.getDocumentElement(); // Document의 Element객체를 따로 가져온다.
NodeList items = order.getElementsByTagName("item"); // TagName("")의 Element객체를 (복수가 될 수도 있고 단일 Node가 될 수도 있다. ) 가져와 NodeList 객체에 담는다. 이런식으로 xml의 형태에 관계없이 원하는 NodeElement를 가져와서 사용 할 수 있다.
String node_str;
for (int i = 0; i < items.getLength(); i++){
Node item = items.item(i);
node_str = item.getFirstChild().getNodeValue(); //해당 노드의 데이터 값을 node_str에 저장한다.
}
SAX(Simple API for XML) Parser
장점 - 라인으로 읽기 때문에 일정하고 적은량의 메모리를 사용한다
단점 - 원하는 정보를 얻고자 하면 다시 파싱해야 한다
반드시 특정 Element에 대해서 어떻게 동작할지 사용자가 직접 정의해 줘야 한다
[출처] java xml parser 비교 (DOM, SAX)|작성자 완전컴맹
Pull Parser
장점 - 내가 원하는 엘리먼트까지 파싱 할 수 있다
단점 - 원하는 정보를 얻고자 하면 다시 파싱해야 한다
SAX보다 약간 더 느리다
반응형'안드로이드(이클립스) > 막 써' 카테고리의 다른 글
이클립스에서 v7 사용시 문제 (0) 2016.05.23 리스트뷰 아이템 클릭 문제 (0) 2016.05.09 폴더병 해상도 (0) 2016.04.11 Integer, int (0) 2016.04.08 안드로이드 메모리 관련 (0) 2016.04.07