Stax: Как начать анализ с определенной позиции файла XML? - PullRequest
2 голосов
/ 08 декабря 2011

У меня очень большой XML-файл (500 МБ).Можно ли в этом случае отслеживать положение последнего проанализированного элемента?Так, скажем, если я успешно проанализировал половину этого или jvm внезапно упал, я могу начать немедленно с той позиции, с которой я ушел в последний раз.

1 Ответ

1 голос
/ 08 декабря 2011

Вы могли бы написать некую форму хранилища истории, чтобы она содержала структуру вплоть до точки, которую вы проанализировали; однако я подозреваю, что для продолжения анализа с этого момента вам придется отключить все формы проверки вашего синтаксического анализатора - XML ​​предназначен для гарантии структуры и содержимого документа с головы до ног; он не предназначен для специального анализа.

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

например, с учетом структуры XML:

<root>
  <child id="1">
    <subchild id="1'/>
  </child>
  <child id="2'>
    <subchild id="2"/>
    <subchild id="3"/>
  <child/>

Если ваш синтаксический анализатор падает после анализа <child id="1"/>, вам нужно создать новый псевдодокументант, содержащий элемент <root>, а также учесть тот факт, что вы уже проанализировали дочерний элемент 1 при возобновлении обработки - в случае, если любых проблем с зависимостями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...