이 작업을 수행하는 가장 빠른 방법 (빠른 코딩)은 SAX로 구문 분석하려는 내부 문서 부분을 내부 문자열로 작성한 다음 해당 문자열을 기반으로 StringReader
을 사용하여 핸들러를 사용하는 SAX 파서.
실제로 필요한 것은 데이터를 기반으로 SAX 이벤트를 생성하고 해당 이벤트를 처리기에 제공하는 것입니다. InputSource
또는 Reader
의 형식으로 데이터를 가져온 다음 위에서 설명한 방법 인 구문 분석을 사용하거나 단순히 ContentHandler
의 메소드를 직접 호출하여 SAX 이벤트를 시뮬레이션 할 수 있습니다 이미 쓰여있다. 그러나 문서를 모두 복잡하게 만들면 올바른 순서로 호출하고 필요한 데이터를 제공하여 올바른 데이터를 제공하면 고통 스러울 수 있습니다.
Dom4J가 문서 구조의 노드를 기반으로 InputSource
을 만드는 방법을 제공하면 가장 쉽게 사용할 수 있으며 먼저 문자열에 쓰는 것보다 훨씬 효율적입니다.
실제 작업을 수행하는 ContentHandler
부분을 ContentHandler
과 내부 트리를 처리하는 새 클래스에서 사용할 수있는 별도의 클래스로 추출하는 것이 좋습니다.
그러나 이것은 매우 느릴 것입니까? – Xaero182
얼마나 재 파싱 하느냐에 따라 느릴 수도 있습니다. 그러나 이미 파싱 했으므로 부분을 재분석하는 결정을 내리는 것이 비효율적입니다. –
그게 사실이야. 실제로 여러 핸들러를 추가하고 병렬로 더 많은 작업을 수행 할 수 있습니다. 내가 제안한대로 ContentHandler의 일부를 추출 할 것입니다. 감사! – Xaero182