300MB XML 파일을 읽는 데 XSLT를 사용하고 있습니다. 일부 태그 내용을 검사해야하고 다른 태그 요소를 출력으로 인쇄해야합니다.XML을 읽는 더 빠른 방법은 무엇입니까?
그것은 아주 긴 시간 (10 분)와 결국은 '살해'와 다른 출력 진술이 종료하고있다.
더 빠른 방법은 무엇입니까? 자바에서 SAX 파서를 사용하여 읽을 수 있습니까? 미리 감사드립니다.
300MB XML 파일을 읽는 데 XSLT를 사용하고 있습니다. 일부 태그 내용을 검사해야하고 다른 태그 요소를 출력으로 인쇄해야합니다.XML을 읽는 더 빠른 방법은 무엇입니까?
그것은 아주 긴 시간 (10 분)와 결국은 '살해'와 다른 출력 진술이 종료하고있다.
더 빠른 방법은 무엇입니까? 자바에서 SAX 파서를 사용하여 읽을 수 있습니까? 미리 감사드립니다.
첫 번째 단계는 시간이 XML 구문 분석기 또는 XSLT 프로세서에서 사용되었는지 여부를 확인하는 것입니다. (a) 아무것도 수행하지 않는 변환 (<xsl:template match="/"/>
) 및 (b) 모든 내용을 복사하는 변환 (<xsl:template match="/"><xsl:copy-of select="."/></xsl:template>
) 및 결과를 실제 변환과 비교하십시오.
XSLT 프로세서는 많이 변화 할 모든 가능한에서, 당신은 몇 가지 시도해야합니다. XSLT 프로세서를 사용하는 다른 방법을 실험해볼 필요가 있습니다. 예를 들어 DOM을 사용하는 것보다 훨씬 효율적인 내부 트리 모델이있는 경우도 있습니다. 따라서 여기에서 프로세서의 세부 사항과 사용 방법을 다시 확인하십시오.
마지막으로, "긴 시간"은 우리에게 아무것도 알 수 없습니다. 실제로 소요되는 시간을 알려주십시오. 합리적인 것이 든 어딘가에서 잘못된 것이 있는지 여부를 알려줄 수 있습니다.XSLT 스타일 시트는 정규 표현식과 같은 방식으로 Statemachine으로 변환 될 수 있습니다 (XSLT를 다루는 일부 라이브러리는 "컴파일"옵션을 가지고 있기 때문에 비용 대비 효과를 결정할 수 있습니다) 그렇게했다).
이렇게하면 매우 빠릅니다. 스타일 시트의 성질은 이것에 영향을 미칠 것입니다. 템플리트 매칭이 모든 것이 순방향 전용으로 수행 될 수있는 경우 (또는 내부적으로 다시 작성 될 수있는 경우), 문서에서 많은 단계를 다시 수행해야하는 경우보다 훨씬 빠릅니다 .
심지어 최고의 구현하지만 아마 앞으로 만 (여부 SAX 나 풀 같은 푸시)이 XML의 구문 분석과 최적의 구현보다 느리게 될 것입니다. 그러나 XSLT 접근 방식과 마찬가지로 전방 전용 파서가 이전에 발생한 요소에 대해 많은 상태를 유지해야만 이전 요소를 참조하는 방식으로 일부 요소에 응답 할 수있는 경우 상황이 느려질 수 있습니다 상당히. 결과적으로 DOM 접근법 (전체 문서 또는 하위 트리)이 속도면에서 비교 가능 해지고 (이전에 발생한 요소를 참조하는 것이 DOM이 가장 쉽게 만드는 부분이기 때문에) 당신은 그들이이 적은, 당신은 더 큰 이익을 얻을 수 있습니다 않도록 "최대"또는 "뒤로"문서의 참조 부분을 재 작성하는 방법을 볼 수있는 경우는 따라서 어느 접근 방식은, 촬영됩니다.
설명 요청 : xml 파일을 "읽음"이란 무엇을 의미합니까? 당신이 달성하고자하는 목표는 무엇입니까? – Daryn
여기 읽는 것은 내가 어떤 태그 내용 등을 확인해야 의미 당신이 태그를 찾기 위해 전체 파일을 읽을 필요가 있기 때문에 내가 출력 – anand
XML 파일과 같은 다른 태그 요소를 인쇄해야 즉, 첫 번째 장소에서 그렇게 큰 안된다 기반으로. 그리고 뭔가를 변경해야한다면 전체 파일을 다시 작성해야합니다. 300MB를 처리하는 데 얼마나 걸리나요? –