小编use*_*209的帖子

SAX字符缓冲区大小

我正在尝试使用Sax来解析非常大的XML文件.100的megs.问题是Parser一次读取正好2048个字符并终止.我使用回调"public void characters(...)"将标签的值分为两部分.例如,第一部分位于位置2044的字符数组中,长度为4"2013"​​,第二部分位于位置0的第二部分"-09-30",长度为6.应该是日期值"2013-09-30"如果收到一个部分.何我可以避免这种分裂?有人可以帮帮我吗?

    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);
    }
    . …
Run Code Online (Sandbox Code Playgroud)

java xml parsing sax saxparser

1
推荐指数
1
解决办法
1842
查看次数

标签 统计

java ×1

parsing ×1

sax ×1

saxparser ×1

xml ×1