|
|
|
Разбить XML на несколько частей?
|
|||
|---|---|---|---|
|
#18+
Как можно в Linux разбить 1Гб xml файл на 50Мб кусочки, но чтобы они все были валидно структурированы как обычный XML? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 12:25 |
|
||
|
Разбить XML на несколько частей?
|
|||
|---|---|---|---|
|
#18+
armix2000, Честно говоря, вообще слабо себе представляю, как решить такую задачу безотносительно ОС. Начиная с того, что "разрезанный" XML не можеть быть валидным по определению и заканчивая самыми разнообразными вариантами структуры внутри файла. Изначально задача-то какая стоИт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 15:04 |
|
||
|
Разбить XML на несколько частей?
|
|||
|---|---|---|---|
|
#18+
miwaonlinearmix2000, Честно говоря, вообще слабо себе представляю, как решить такую задачу безотносительно ОС. Начиная с того, что "разрезанный" XML не можеть быть валидным по определению и заканчивая самыми разнообразными вариантами структуры внутри файла. Изначально задача-то какая стоИт? Очень большой файл, нужно его разбить на 10-20 мелких файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 16:19 |
|
||
|
Разбить XML на несколько частей?
|
|||
|---|---|---|---|
|
#18+
armix2000, Как Вы представляете себе результат с учетом Вашего пожелания чтобы все части были "валидно структурированы как обычный XML"? Можете привести пример на основе небольшого файла? IMHO в общем виде можно говорить либо о банальной порезке файла на куски заданного размера без учета валидности структуры. Вполне рабочий вариант, если впоследствии планируется склеить фрагменты в исходный файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 16:40 |
|
||
|
Разбить XML на несколько частей?
|
|||
|---|---|---|---|
|
#18+
armix2000, Сорь, не закончил... Либо о разборе исходного файла с выделением отдельных его блоков (тегов) на некотором уровне вложенности. Такой вариант может оказаться вполне приемлемым когда заранее известна структура файла на некотором уровне и каждый блок этого уровня может быть рассмотрен как единая сущность, не зависящая от других. Типичный пример - логи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2013, 16:44 |
|
||
|
Разбить XML на несколько частей?
|
|||
|---|---|---|---|
|
#18+
прим., лучше сразу уйти в потоковый парсер - xml stream parsing ну, рассекать надо по узлам, это раз. если вы предположили 10-20 и ~50 кусков, то у вас возникла мысль о возможности деления. 1) ищем (в линуксе есть парсеры) или пишем программу, которая, например по xpath находит эти самые 50 кусков, то есть узлов. допустим путь будет /a/b/c (БЕЗ вариаций, у всех узлов одинаковый!) и вы получили почти искомые 50 кусков с путем //d/e/f/... что-то типа @массив_узлов = findnodes('/xpath/a/b/c', $xml) 2) если вам следует восстановить и потерянный путь /a/b/c, то его следует добавить в полученные куски <!-- добавляем --> <a><b><c> <!-- полученный кусок --> <d> <e> <f> ... </f> </e> </d> </a></b></c> чтото типа, $кусок = @массив_узлов[индекс_куска_например_в_цикле].gettext() $для_записи_в_файл = '<a><b><c>' . $кусок . '</a></b></c>' или более сложный вариант, создать новый узел /a/b/c, включить в узел "c" полученный $кусок и вывести в файл 3) но, как правило все сложнее и файл навсегда останется тем же большим и работать с ним следует через потоковый парсинг для уменьшения размера исходного файла, который можно компрессировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 20:49 |
|
||
|
Разбить XML на несколько частей?
|
|||
|---|---|---|---|
|
#18+
armix2000обычный XMLПрям как "обычная база данных". впрочем коллеги выше уже это подробно разжевали. остается еще спросить "кто" будет "есть" полученную лапшу и не пропадет ли у него от этого "аппетит"? Для чего (что за программа приемник) все эти "прыжки в ширину"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 23:06 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=38493292&tid=1482665]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
174ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 509ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...