2011-02-06 3 views
2

많은 REST 기반 API 호출에서이 매개 변수는 nextURL이라고하며 다음 URL을 쿼리 할 수 ​​있습니다. 보통 루트 요소에 있습니다 (또는 다음 요소 일 수 있습니다)XML의 루트 요소 만 읽음

일반적으로 어떻게 읽습니까? 표준 XML 파서를 사용하는 경우 전체 XML을 읽고로드 한 다음 getElementsByTag에 의해 nextURL을 읽습니다. 더 좋은 해결책이 있습니까? 전체 XML을 읽는 것은 물론 시간/메모리 낭비입니다.

편집 : 전체 XML을 읽지 않고 새로운 since_date를 캡처 할 게

<result pubisher="xyz" nextURL="http://actualurl?since_date=<newdate>"> 
<element>adfsaf</element> 
.. 
</result> 

같은 예제 XML이 될 것입니다.

답변

3

파이썬 : ElementTree iterparse method ...을 사용할 수 있습니다. 원하는 데이터가 시작 이벤트를 얻는 시간까지 구문 분석 된 속성에있는 경우입니다. 요소의 텍스트 또는 꼬리 부분에있는 경우 종료 이벤트가 나타날 때까지 기다려야합니다. XML을 어떻게 보이는지 보여주기 위해 질문을 편집하고 예제를 사용하여 "다음에"또는 어쩌면 설명 할 수 있다면 좋은 생각입니다.

0

"표준 XML 파서"라는 용어는 많은 영역을 다루고 있으므로 사용자가 자신의 행동을 일반화 할 수 있다고 생각하지 않습니다. 예를 들어 표준 DOM 파서는 트리 기반이며 전체 XML을 메모리로 읽지 만 SAX 파서 (StAX도 마찬가지입니다)가 앱이 발전하기를 원할 때 발전하지는 않을 것입니다. 후자 인 SAX 또는 StAX 파서가 필요한 것입니다.

편집 : SAX와 StAX 동작의 차이점에 대해서는 아래 KitsuneYMG의 설명을 읽으십시오.

+2

SAX는 xml을 읽고 다양한 이벤트/콜백을 보내야합니다. StAX는 iterator 접근법 (예 : -> xmlin.next())에 더 가까우며 언제든지 포기하기 쉽습니다. 자바 표준 SAX 리더는 IIRC를 포기하는 예외가 필요합니다 – KitsuneYMG

+0

감사합니다. 나는 이것을 알지 못했고 정보를 높이 평가했습니다! –

관련 문제