+ -
当前位置:首页 → 问答吧 → SAX解析大数据量的xml文件获取字符内容的问题

SAX解析大数据量的xml文件获取字符内容的问题

时间:2011-08-06

来源:互联网

我需要解析一个xml文件,xml文件的结构如下所示:
XML code

<Response>
    <Object>
        <Element>ID</Element>
        <Element>XM</Element>
        <Element>GMS</Element>
        <Element>XB</Element>
    </Object>
    
    <Records>

        <Record>
            <Element>GMS</Element>
            <Value></Value>
        </Record>
        <Record>
            <Element>ID</Element>
            <Value>0011f887252346818a59fedffe6d7821
            </Value>
        </Record>
        <Record>
            <Element>XM</Element>
            <Value>李明</Value>
        </Record>
        <Record>
            <Element>XB</Element>
            <Value></Value>
        </Record>
        <Record>
            <Element>GMS</Element>
            <Value>1111111111111111111</Value>
        </Record>
        <Record>
            <Element>ID</Element>
            <Value>0015224632e9476aaa8f419dcfc222b9
            </Value>
        </Record>
        <Record>
            <Element>XM</Element>
            <Value>柳眉</Value>
        </Record>
        <Record>
            <Element>XB</Element>
            <Value></Value>
        </Record>
          </Records>
<Response>


其中<Object>中的内容是每一个人所具有的属性,<Records>里面的内容是每个人对应属性的数值。
然后再对其进行修改操作,我原来使用的是dom4j,但对于大数据量的xml文件操作时就会出现内存溢出错误。因此我现在换用了SAX来解析,因为SAX是事件触发的,遇到换行或者空白时也会触发void characters(char ch[], int start, int length),解析出好多无关的比如"\n"的字符,怎样只获取到数值内容忽略掉无关内容,比如对于后一条记录获取到如下内容:
GMS
1111111111111111111
ID
0015224632e9476aaa8f419dcfc222b9
XM
柳眉
XB

我获取到字符内容后还要进行判断修改操作,如何判断获取到的某一项内容,比如GMS对应的数值内容为空呢。我原来是将characters()方法 中获取到的字符内容放在List中,但我发现里面的无关内容太多,并且当某一项为空时List里面并没有存放相应的null或者" "。处理30M以上的xml如果不用sax,还有没有其他的方法。这个问题已经困扰我四五天了,一直没解决掉,还请大家多帮忙、多指教啊。

作者: yunzhongfeiniao   发布时间: 2011-08-06

还请大家帮帮忙呢 不会是都在看超级杯的直播吧。

作者: yunzhongfeiniao   发布时间: 2011-08-06

热门下载

更多