xml парсерите не четат такова голямо съдържание на файла

<?xml version="1.0"?>

<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="test">
    <table_data name="test">
    <row>
        <field name="field1">406</field>
        <field name="field2">a2</field>
        <field name="field3">16</field>
        <field name="field4"></field>
        <field name="field5" xsi:type="xs:hexBinary">
[get the content from http://122.183.130.242/file/hex.txt path because i cannot give such a large content to stackoverflow]

        </field>
        <field name="field6">16</field>
    </row>
    </table_data>
</database>
</mysqldump>

Опитвам се да анализирам и прочета съдържанието от горния xml файл.

Използвам DOM анализатор и също опитах StAX анализатор за анализ на XML, но не мога да анализирам толкова голям файл.

Как мога да анализирам големи XML файлове?


person Mohan    schedule 08.02.2012    source източник
comment
DOM не е добър вариант за толкова големи файлове. Ако SAX също се провали, единствената опция, която имате, мисля, че ще увеличи паметта.   -  person kosa    schedule 08.02.2012
comment
да, затова питам приятелю. какъв ще бъде по-добрият подход за този.   -  person Mohan    schedule 08.02.2012
comment
каква грешка получаваш, когато се опитваш да анализираш?   -  person Robert Peters    schedule 08.02.2012
comment
не получих никаква грешка. но анализът на файла е пропуснат.   -  person Mohan    schedule 08.02.2012
comment
stackoverflow.com/questions/355909/   -  person ethrbunny    schedule 08.02.2012
comment
@Mohan, не мисля, че има такъв, освен увеличаване на паметта (или) намаляване на размера на файла, защото опитахте и StaX (което е последната опция за големи файлове).   -  person kosa    schedule 09.02.2012
comment
анализирането на файла е пропуснато казва, че анализаторът не е проблемът, нещо друго във вашия код е. Ако наистина беше проблем, че файлът е твърде голям, ще получите OutOfMemoryError. За да получите по-добри отговори, публикувайте своя код.   -  person kdgregory    schedule 09.02.2012
comment
Файлът, към който сте се свързали, е 64 килобайта. Това в никакъв случай не е твърде голямо, за да се анализира дори с DOM – което така или иначе не би раздуло файл с толкова проста структура. (Приемайки настолна Java и нейните настройки на паметта по подразбиране.) Вашата грешка е някъде другаде.   -  person millimoose    schedule 09.02.2012
comment
да, проблемът е решен след рестартиране на системата ми. не знам защо проблема се получава така. благодаря момчета, че прекарахте времето си с мен.   -  person Mohan    schedule 09.02.2012
comment
@Mohan - тъй като проблемът изчезна, моля, изтрийте този въпрос; няма да помогне на никой друг.   -  person kdgregory    schedule 09.02.2012


Отговори (1)


Използвайте метода SAX Parser .parse(InputStream stream, HandlerBase handler)

За манипулатора използвате DefaultHandler.

За параметъра „поток“ направете следното:

BufferedReader stream=new BufferedReader( new FileReader(String filename));

...където "име на файл" е, познахте, името на вашия файл. Сега очаквам да знаете как да използвате DefaultHandler. По принцип презаписвате методите, които ви интересуват. Опитайте се да промените размера на буфера на BufferedReader и мисля, че ще сте доволни от резултата.

person vlad-ardelean    schedule 08.02.2012
comment
Имам въпрос, този анализатор SAX позволява ли промяна и актуализиране на xml съдържанието? - person Mohan; 09.02.2012