압축 근본적으로 영향을 그 큰 XML 파일의 크기를 줄일 수 있습니다 압축 된 XML의 일부 특정 데이터. 이 Rhino의 자바 스크립트 (주로 자바) 예입니다큰 zip으로 압축 된 XML을 저장하고 일부 특정 데이터 (Alfresco) 만 효율적으로 추출하는 방법은 무엇입니까? 난 단지 추출해야</li> </ul> <p></li> <li>네트워크 사용</p> <ul> <li>저장 공간 사용, IO 대기 (읽기 및 쓰기) :
var zis = new java.util.zip.ZipInputStream(document.properties.content.getInputStream());
var ze = zis.getNextEntry();
if (ze!=null){
var scanner = new java.util.Scanner(zis,"UTF-8").useDelimiter("\\A");
var content = scanner.hasNext() ? scanner.next() : "";
var docXml = new XML(content);
logger.log("xml mytag/text(): "+docXml.mytag);
}
zis.closeEntry();
zis.close();
하지만, (예를 들어 XML 헤더에서) 일부 특정 요소를 추출해야하는 경우 DOM의 전체 XML을로드 할 필요가 없습니다. 알고리즘은 요청 된 모든 항목이 발견되거나 XML 파일을 찾을 기회가 없을 때 XML 파일을 읽지 못하게해야합니다.
Alfresco의 서비스 또는 자바 라이브러리가 있으며, XML을 사용하여 XML에서 요청 된 항목을 추출합니다. StAX2 API (Woodstox)?
쉽지 않습니다. 당신은 무엇을 구하기 위해 무엇을 지정할 것인지 알려줄 수 있습니까? 예를 들어 첫 번째 비 루트 태그, 300 번째 태그, 모두 텍스트 내용 ... 알고있는 한 최대한 빨리 수행 할 수있는 방법이있을 수 있습니다. –
GPI
@GPI - 예 : 경로의지도 (해시 맵) – wildloop
Stax2/Woodstox를 사용하여 필요한 XML 부분을 추출한 다음 XPath를 실행할 수 있습니다. 그러나 (세부 사항에있는 악마의 제비) 그것을하는 것은 쉽지 않다. 기술을 설명하는 오래된 [블로그] (http://andreas.haufler.info/2012/01/conveniently-processing-large-xml-files.html)를 발견했으며 관련 소스 코드는 이동했지만 유지 관리 된 것처럼 보입니다 [여기] (https://github.com/scireum/sirius-kernel/tree/master/src/main/java/sirius/kernel/xml). 나는 그것을 사용하지 않았지만 필요한 것만으로 충분할 수도 있습니다. – vanOekel