?

Log in

XML кунг-фу - Журнал Восставшей Машины [entries|archive|friends|userinfo]
ArkanoiD

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

XML кунг-фу [Aug. 28th, 2012|06:40 pm]
ArkanoiD
Тут как-то заезжий гастролер показывал мне очень сильное кунг-фу с помощью MS Excel, XML data import и Pivot tables, как взять, скажем, ебанистического размера отчет Nessus'а и сделать из него что-нибудь полезное. Ну, гастролер уехал, а я в MS Office-то ни бумбум, решил попробовать; что ж, видимо, далек я от Дао, потому что Excel у меня тупо падает на этапе создания схемы, а все вокруг говорят "это нормально, он всегда тут падает" (а у него была какая-то бета-превью, которая у меня точно нигде не запустится).

Однако, кунг-фу мне понравилось, потому что ебля с CSV/grep/awk и прочим, чем я занимался по-старинке уже порядком поднадоела -- съедет где-нибудь экранирование перевода строки или закрывающей кавычки и вот сразу куча радости.

Это я к чему -- может, можно как-нибудь попроще? Но визуальная тулза "возьми XML и сделай из него какой-нибудь sqlite" в качестве первого этапа нужна. Что посоветуете?
linkReply

Comments:
[User Picture]From: puremind
2012-08-28 02:43 pm (UTC)
я не знаю что нужно получить в итоге, но из xml можно сделать практически все что угодно с помощью xslt. поседеешь правда пока его отладишь, но вещь в принципе не сложная. я в свое время с его помошью данные из таблиц в ворде доставал с довольно сложным разбиением на ячейки.
(Reply) (Thread)
[User Picture]From: arkanoid
2012-08-28 02:46 pm (UTC)
Ключевое слово -- визуальная (и интерактивная). Ткнул туда, ткнул сюда, неправильно расставилось -- поправил.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: ikaktys
2012-08-28 02:45 pm (UTC)
а где оно падает, уже на импорте большого xml ?
какая версия Excel ?
(Reply) (Thread)
[User Picture]From: arkanoid
2012-08-28 02:46 pm (UTC)
2010, дело не в большом, а в том, что схемы нет, он говорит -- создавать будем? я ему -- ага, и тут он -- брык.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: oleposya
2012-08-28 02:50 pm (UTC)
по данному пути?
http://www.addictivetips.com/microsoft-office/excel-2010-working-with-xml-format/

падает на этапе excel will create schema for you?
а версия оффиса какая ?
(Reply) (Thread)
[User Picture]From: arkanoid
2012-08-28 02:54 pm (UTC)
Да, 2010.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: enternet
2012-08-28 02:57 pm (UTC)
Я такое делаю через препроцессинг через XSLT и затем уже в ексель. Тогда ничего не падает. А препроцессинг элементарный - просто записываются построчно интересующие узлы с атрибутами. Т.е. из исходного XML вычищается всякий мусор типа пространств имен, лишних узлов, комментариев и прочей крови/кишок/расчлененки.

Насчет ебанистического размера XML не уверен, у меня максимум на несколько гигов попадалось. К сожалению, все известные мне процессоры XSLT строят DOM (не умеют работать как SAX), так что лимит размера файла есть - по размеру доступной памяти. Пока вкладываюсь.
(Reply) (Thread)
[User Picture]From: _slw
2012-08-28 02:58 pm (UTC)
потому что надо perl использовать а не гланды автогеном пытаться удалять.
(Reply) (Thread)
[User Picture]From: puremind
2012-08-28 03:03 pm (UTC)
можно еще python
(Reply) (Parent) (Thread)
[User Picture]From: develop7
2012-08-28 04:09 pm (UTC)
как именно «использовать»?
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: alexkuklin
2012-08-28 02:59 pm (UTC)
после коммента _slw подписался и взял попкорн
(Reply) (Thread)
[User Picture]From: amavlyanov
2012-08-28 04:47 pm (UTC)
после ваших я пожалуй тоже тут потусуюсь. :)
(Reply) (Parent) (Thread)
[User Picture]From: msh
2012-08-28 03:26 pm (UTC)
Посоветую Perl, Python или хотя бы PHP. И парсить там XML-и во что угодно.

Без всяких кавычек и экранирований, потому что там есть нормальные парсеры и XSLT

И написав скрипт один раз можно использовать его всю жизнь, а ковыряться с визуальными фигнями для каждого файла
(Reply) (Thread)
[User Picture]From: dma
2012-08-28 05:42 pm (UTC)
Я тоже соглашусь, что сначала надо перевести данные в менее богомерзкий формат, а уже потом можно чем угодно, хоть экселем, хоть в rrdtool, хоть в MS DTS.
(Reply) (Thread)
[User Picture]From: dma
2012-08-28 05:43 pm (UTC)
И перевести, естественно, перлом (или другим скриптовым языком, имеющим готовый XML-парсер в составе)
(Reply) (Parent) (Thread)
[User Picture]From: _winnie
2012-08-28 06:26 pm (UTC)

XPath

если надо много работать с XML, то стоит изучить его родной awk/grep, он называется XSLT.

Писать руками XSLT - это жопа, поэтому с XSLT надо ознакомится чисто поверхостно, что бы потом использовать его врапперы. С самим XSLT - поверхостно, а с XPath - поглубже, потому что XPath для XML - это тоже что grep для текстовых файлов.

Я для парсинга xml из комадной строки использую xmlstarlet, он хорошо сочетатся с xargs, awk и тп.

Задачи "выцепить такие-то поля из xml-ки" решаются однострочником на bash, типа таких - http://users.livejournal.com/_winnie/275520.html -
svn stat --xml | xmlstar sel -t -m "/status/target/entry/@path" -v . -n

XML - довольно популярный формат, поэтому XPath - полезное инвестирование времени, потом можно применять для кучи приложений. Например, перегонять чужие отчеты из html в XHtml и дальше выцеплять из них данные как из XML при помощи XPath.

Кстати, код awk можно выносить в *.awk файлы, а не эмбедить его в шелл, тогда гораздо меньше проблем с экранированием, и редактор текста даёт подсветку синтаксиса.

Edited at 2012-08-28 06:39 pm (UTC)
(Reply) (Thread)
[User Picture]From: kika
2012-08-28 07:05 pm (UTC)

Re: XPath

+1 к xmlstarlet, без него жизни нет.
(Reply) (Parent) (Thread)
[User Picture]From: drf_ckoff
2012-08-28 06:45 pm (UTC)
"визуальная тулза"? тебя mds таки покусал?
(Reply) (Thread)
[User Picture]From: dimas
2012-08-28 08:57 pm (UTC)
я обычно просто беру перл или питон и пишу конвертер.

зачем тебе там xml если у тебя плоская таблица? или оно режется на несколько таблиц?
(Reply) (Thread)
[User Picture]From: cdplayer
2012-08-28 09:38 pm (UTC)
> взять, скажем, ебанистического размера отчет Nessus'а и сделать из него что-нибудь полезное.

http://www.splunk.com/download?r=header

До 500 мегабайт логов в день - бесплатно можно пользоваться...
(Reply) (Thread)
[User Picture]From: arkanoid
2012-08-28 09:49 pm (UTC)
О, а он и для этого годится? Интересно.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: duke_igthorn
2012-08-28 10:38 pm (UTC)
А можно я сюда с ынтерпрайзом вломлюсь? Знаешь страшные слова WebSphere Message Broker от IBM! Там любые форматы (включая XML) парсить и преобразовывать самое оно!
(Reply) (Thread)
[User Picture]From: stimur
2012-08-29 02:53 am (UTC)

Это старость, Маугли ...

не хочется бороться, бодаться, копаться и настраивать.
А хочется чтобы просто в гуи и все решено, ибо запарило возиться со всеми этими настройками и аргументами ...
(Reply) (Thread)
[User Picture]From: stimur
2015-08-28 09:19 pm (UTC)

Re: Это старость, Маугли ...

Спустя три года:
импортируй CSV в ElasticSearch и визуализируй до посинения Кибаной :)
(Reply) (Parent) (Thread)
[User Picture]From: book_mark_ed
2012-08-29 03:03 am (UTC)
Perl — Practical Extraction and Report Language — "практический язык для извлечения данных и составления отчётов".
Как бы, язык изначально разрабатывался для того чтобы парсить txt и csv, и упихивать их в удобоваримый формат.
(Reply) (Thread)