2010-08-05 2 views
7

현재 SAX를 사용하여 인터넷에서 데이터를 검색하는 응용 프로그램을 개발 중입니다. 이전에 Google Weather API와 같은 간단한 XML 파일을 구문 분석하는 데 사용했습니다. 그러나 내가 관심있는 웹 사이트는 다음 단계로 파싱을합니다. 페이지가 거대하고 더러워 보입니다. 난 단지 몇 가지 구체적인 라인을 검색해야합니다; 나머지는 나를 위해 유용하지 않습니다.
쓸모없는 줄/태그를 건너 뛸 수 있습니까? 아니면 단계별로 진행해야합니까?SAX 파서를 사용하여 큰 XML 파일 구문 분석 (일부 줄/태그 건너 뛰기)

+0

에서 소화

체크 아웃 I 확장 VTD-XML 당신이 부지 Thaks SAX보다 훨씬 더 메모리 효율적인 방식으로 랜덤 액세스, 또는 아파치 소화 –

답변

1

예, 건너 뛸 수 있습니다. 원하는 태그를 정의하면 태그 값만 가져옵니다.

+0

와 XML에 액세스 할 수 있습니다 생각, 당신의 대답은 나를 오래 저장합니다 코드 줄! – Amine

1

xml을 구문 분석하기 위해 장면 뒤의 SAX를 사용하는 XPath를 사용해 볼 수 있습니다. 여기서의 단점은 Xpath를 평가할 때마다 XML이 파싱된다는 점입니다. 다음 DOM 파서 SAX parser..SAX 파서보다 훨씬 빠른

+0

응답 해 주셔서 감사합니다. – Amine

1

당신은 당신이

+0

SAX 구문 분석은 DOM보다 훨씬 빠릅니다. 또한 DOM은 전체 문서를 메모리에 가져와야합니다. –

+0

답장을 보내 주셔서 감사합니다. 정말 도움을 주시면 감사하겠습니다. DOM을 사용하고 출력 결과를 확인하려고합니다! – Amine

2

예를 그냥 태그를 무시, 그것을 할 수 있습니다 .. 당신이 큰 XML 파일을 구문 분석 할 때 유용 특정 태그를 읽을 수 에 관심이 없습니다. 그러나 당신은 흥미로운 부분을 가져 오는에 대한 구문 분석 XML 문서와 XPath를 만들기위한 TagSoup의 조합을 시도 할 수 있습니다

public startElement(String uri, String localName, 
    String qName, Attributes attributes) { 
    if(localName.equals("myInterestingTag") { 
    // do your thing.... 
    } 
} 

public void endElement(String uri, String localName, String qName) { 
    if(localName.equals("myInterestingTag") { 
    // do your thing.... 
    } 
} 

public void characters(char[] ch, int start, int length) { 
    // if parsing myinteresting tag... do some stuff. 
} 
+0

고마워, 그게 내가 보통하는 방법이야;)! – Amine

1

전체 문서가이 (는 DefaultHandler IMPL)에 대한 해석되어야 할 것이다 있습니다 .

+0

답답한 DaDaDom에 대해 감사드립니다. – Amine

+0

안타깝게도 xpath를 사용하는 것이 안드로이드에서 쉽지 않다 – Janusz

1

은 건너 뛸 SAX를 사용하는 전략에 대해 유사한 질문에 대한 내 대답은/태그를 무시 참조 : 그것은되는 XMLReader에 ContentHandlers 전환 포함

Skipping nodes with sax

. 건너 뛰고 자하는 XML 문서의 포팅을 읽을 때, 이벤트를 전혀 수행하지 않는 ContentHandler를 교환하면됩니다. 무시할 섹션의 끝 부분에 도달하면 XML 컨텐트를 처리하는 데 사용했던 컨텐트 핸들러로 컨트롤을 다시 전달합니다.

+0

당신의 대답은 확실히 내 목표를 달성하는 데 도움이 될 것입니다!덕분에 많이 - 발가락 – Amine

4

나는 평형 소화조를 좋아한다. 특정 태그에 대해 규칙을 지정할 수 있습니다. 태그가 발견 된 경우에만 규칙이 실행됩니다.

Digester는 색소폰을 통해 만들어 졌으므로 모든 색소폰 기능과 특정 태그를 선택적으로 구문 분석하는 데 필요한 특수성을 갖추고 있습니다. 또한 해당 태그가 발생할 때 새로운 요소로 푸시 된 스택을 사용하고 요소가 끝날 때 팝업됩니다.

모든 구성 파일을 구문 분석하는 데이 파일을 사용합니다. http://commons.apache.org/digester/

+0

고마워 라자, 나는이 해결책을 들여다 볼 것이다 !! – Amine

관련 문제