Обработка фрагментов Sax Stax на Java - PullRequest
0 голосов
/ 09 ноября 2018

Метод символов синтаксического анализатора Stax и Sax, упоминающий, что он возвращает порцию данных в документации, но я получаю Недостаточно памяти, Может ли кто-нибудь объяснить это? если возможно пример, я пытаюсь прочитать XML, который будет иметь большой контент между одним тегом XML.

<x>......too long data...</x>

смотря, могу ли я переопределить это или некоторые свойства, которые я могу установить? я обнаружил, что мы можем установить CDATA_CHUNK_SIZE = "jdk.xml.cdataChunkSize" в последних версиях, но это не вариант для меня.

В синтаксическом анализаторе Stax : «процессор может вернуть все непрерывные символьные данные в одном фрагменте или разделить их на несколько фрагментов».

В парсере SAX: символьный метод"

символов (char [] ch, int start, int length)

Получать уведомления о символьных данных.

Парсер вызовет этот метод, чтобы сообщить о каждом фрагменте символьных данных. Синтаксические анализаторы SAX могут возвращать все смежные символьные данные в одном фрагменте или могут разбивать их на несколько фрагментов; однако все символы в любом отдельном событии должны исходить от одной и той же внешней сущности, чтобы локатор предоставил полезную информацию. «

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at com.sun.org.apache.xerces.internal.util.XMLStringBuffer.append(XMLStringBuffer.java:208)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanData(XMLEntityScanner.java:1370)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanCDATASection(XMLDocumentFragmentScannerImpl.java:1654)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3020)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
    at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:558)
    at com.javacodegeeks.StAXParserDemo.main(StAXParserDemo.java:65)
...