Большие XML-файлы и нумерация страниц, это возможно? - PullRequest
6 голосов
/ 06 января 2010

проблема

При открытии очень больших файлов XML локально на вашем компьютере почти наверняка потребуется время, чтобы открыть этот файл - это часто может означать, что ваш компьютер блокируется, поскольку считает, что он не отвечает.

Это проблема, если вы обслуживаете пользователей резервными копиями XML довольно сложных баз данных или систем, которые они используют - вероятность того, что они смогут открывать большие резервные копии, не говоря уже об их использовании, невелика.

Возможно ли разбиение на страницы?

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

Я полагаю, что ответ - просто нет, но я хотел бы знать, видел ли кто-либо еще те же проблемы и решил их.

Примечание : Это только на локальном компьютере, не требует подключения к Интернету. JavaScript можно использовать, если он упрощает работу.

Ответы [ 5 ]

3 голосов
/ 06 января 2010

Пагинация с XSLT возможна, но, вероятно, не приведет к желаемым результатам: для работы XSLT весь XML-документ должен быть проанализирован в дереве DOM.

Что вы могли бы сделать, так это поэкспериментировать с потоковыми преобразованиями: http://stx.sourceforge.net/

Или вы можете предварительно обработать большой XML-файл, чтобы разрезать его на более мелкие биты перед обработкой с помощью XSLT. Для этого я бы использовал инструмент командной строки, такой как XMLStarlet

2 голосов
/ 06 января 2010

Отлично, очень хороший вопрос!

XSLT-реализации, которые я знаю, требуют DOM, поэтому они обязаны обращаться ко всему документу (хотя это может быть сделано ленивым способом)

В любом случае, вам стоит взглянуть на VTD-XML: http://vtd -xml.sourceforge.net /

Новейший процессор SAXON XSLT также поддерживает элементарную поддержку так называемой потоковой XSLT. Читайте об этом здесь: http://www.saxonica.com/documentation/index/intro.html

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

1 голос
/ 26 января 2010

XMLMax Виртуальный XML-редактор считывает, анализирует и отображает 1-гигабайтный XML-файл в виде дерева примерно за 30 секунд на быстром ПК. Только ОС Windows. Он будет работать с XML любого размера или структуры.

0 голосов
/ 06 января 2010

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

Это, конечно, вызовет ряд других проблем. Например, вам придется придумать специализированный парсер, если вам нужно просмотреть данные целиком или по разделам.

0 голосов
/ 06 января 2010

HI, Я не знаю, какой язык программирования вы используете, но в C # с использованием XMLReader я могу читать тег файла по тегу, а не весь файл. Таким образом, вы можете прочитать только первую страницу и остановить чтение. С уважением, Иордания

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