저는 Sax를 사용하여 매우 큰 XML 파일을 구문 분석하려고합니다. 100의 megs. 문제는 Parser가 한 번에 정확히 2048자를 읽고 종료합니다. 콜백 "공개 무효 문자 (...)"를 사용하여 두 부분으로 분리 된 태그 값을 잃게됩니다. 예를 들어 첫 번째 부분은 위치가 2044 인 문자 배열에 4 "2013"이고 두 번째 부분은 길이가 0 인 위치에 "-09-30"입니다. 문자는 값이 "2013-09- 30 "한 부분을 받으면. 이 분할을 피할 수 있습니까? 누구든지 나를 도울 수 있습니까?SAX 문자 버퍼 크기
public void characters(char[] ch, int start, int length) throws SAXException {
if (Main.errorProceso==0){
for(int i=0;i < strlista.size();i++){
if(strlista.get(i).equals(sEtiqueta_actual)){
if (sEtiqueta_actual.equals("Root.Header.Body.")){
String FileNm= String.valueOf(ch, start, length);
if (!FileNm.substring(0,2).equalsIgnoreCase("XX")){
logger.info("El identificador no es XX");
Main.errorProceso=1;
i=strlista.size()+1;
sEtiqueta_actual="";
}
else{
sCod_Fichero=FileNm.substring(0,2)+XXteFormat.format(XXte);
}
}
else if (sEtiqueta_actual.equals("Root.Header.Date.")){
String aux = String.valueOf(ch, start, length).split("T")[0];
try {
sFec=newFormat.format(oldFormat.parse(aux));
} catch (ParseException e) {
logger.error(e.getLocalizedMessage());
Main.errorProceso=1;
}
}
else if (sEtiqueta_actual.equals("Root.Header2.Body2.")){
sNum_Total=String.valueOf(ch, start, length);
}
else if (sEtiqueta_actual.equals("Root.Header3.Body3.Spcf.Inst.")){
sImp =String.valueOf(ch, start, length);
}
.
.
.
else if (sEtiqueta_actual.equals("Root.Header3.Body3.Spcf.Req.")){
try {
sFec2=newFormat.format(oldFormat.parse(String.valueOf(ch, start, length)));
} catch (ParseException e) {
logger.error(e.getLocalizedMessage());
Main.errorProceso=1;
}
}
}
}
코드는 어디에 있습니까? –
@VimalBera 내 코드 – user2830209