我想使用Sax來解析非常大的XML文件。百萬的megs。 問題是解析器一次只能讀取2048個字符並終止。我使用回調「public void characters(...)」得到了標籤值的分解成兩部分的問題。例如,第一部分位於位置2044上的字符數組中,長度爲 4「2013」,位置0上的第二部分爲「-09-30」,長度爲6.它應該是日期 值「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