![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Logparser выбор и сравнение полей из xml файлов |
|
|
Любой язык - [решено] Logparser выбор и сравнение полей из xml файлов
|
Новый участник Сообщения: 28 |
Вроде как немного волоку в sql запросах, но немного погуглив и почитав примеры работы с Logparseroм, решил не экспериментировать, а спросить знающих людей итак тз:
Есть xml файлы, внутри кракозябры и поля типа <FILENAME>,<SOFTWARE> ,<DOCTYPE> и мн.др. Мне нужно, чтобы Logparser выбрал значения этих полей, с привязкой к названию файла, например: 1.xml
<FILENAME>file1</FILENAME> <SOFTWARE>soft1</SOFTWARE> <DOCTYPE>type1</DOCTYPE> 2.xml
<FILENAME>file2</FILENAME> <DOCTYPE>type2</DOCTYPE> результат
FILE FILENAME SOFTWARE DOCTYPE 1___file1_____soft1_____ type1 2___file2______________type2 Пробовал выбирать ставя тип лога "XMLLOG" - выдает ошибку(не в конкретном примере, а с моими xml файлами): "В текстовом комментарии обнаружен недопустимый знак" Пробовал выбирать ставя тип лога "TEXTLINELOG" : SELECT Text FROM 'C:\\222\*.xml' where Text like '%FILENAME%' тут все отлично выбирает, но как теперь выбрать несколько разных полей, если на такие конструкции: Скрытый текст
select filename.*, soft.* from
(SELECT Filename,Text FROM 'C:\\222\*.xml' where Text like '%FILENAME%') filename , (SELECT Filename,Text FROM 'C:\\222\*.xml' where Text like '%SOFT%') soft where filename.Filename=soft.Filename(+) выбивает ошибки, в то время как sql навигатор в коммандах подобного вида ничего "странного" не видит... А еще нужно к названию файла привязаться, как-то SUBSTR по скобках ("<",">") сделать и вывести в csv. Очень надеюсь, что мою тему увидит и прокомментирует, пользователь с ником "Iska", так как я понял - он с этим парсером на "ты". Пробовал ему в ЛС написать, но там ограничения, видимо от таких назойливых как я. А так как этот парсер с урезаным sql, то при попытке что-то выбрать, возникает ощущение "игры в сапера на повышеной сложности" ![]() Просмотрел 2-3 страницы по поиску "Logparser", но ответа или зацепки на свои запросы так и не нашел, на "stackoverflow" и в англоязычных примерах в большинстве встречаются запросы к win'довым журналам и запросы html-страниц. =(. |
|
Отправлено: 23:52, 22-08-2016 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать gremlintv2, выложите образцы xml-файлов (а не приведённые огрызки), упаковав их в архив.
Цитата gremlintv2:
Скрытый текст
Цитата:
Цитата gremlintv2:
![]() Цитата gremlintv2:
|
||||
Отправлено: 07:35, 23-08-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Спасибо что ответили! Прикрепил файлы в топике темы - arxiv.7z. XMLLOG взял из гуя так как думал, что "он сделает все красиво", но увы =(..
|
Отправлено: 09:10, 23-08-2016 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать gremlintv2, это не xml-файлы, к сожалению. В их начале идут некие бинарные «нашлёпки», как я понимаю, некие «как-бы цифровые подписи». Та же песня в конце файлов.
Что Вам нужно извлекать оттуда и в каком виде получать? |
Отправлено: 10:01, 23-08-2016 | #4 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Извлекать нужно часть названия файла и теги, и получать в виде результата:
результат.txt
KOD___________R11GA_____R11GB_____R60GB 33408606______142167____ 28433_____0 38145836______22414_______________25 PS: поле KOD(оно ключевое) получаем из названия файлов через SUBSTR(Filename,7,8) С выбором значений, точно затрудняюсь ответить, так как видимо, нужно будет "привлекать к участию" эталонный xml в котором будут все существующие xml-теги, либо каким-то образом вытягивать все уникальные теги и по ним сравнивать все файлы. Если бы удалось вытянуть все теги и сравнить с файлами, несмотря на содержимое тегов, было бы супер(так чтобы результат не основывался на четко указанных полях и парсились все теги). Знать бы синтаксис и логику работы парсера(к сожалению нет у меня опыта работы с этим инструментом), остальное я постараюсь сам дописать. PPS: как мне показалось, при задании параметра TEXTLINELOG парсер, воспринимает файлы как одну цельную строку. Спасибо! |
|
Последний раз редактировалось gremlintv2, 23-08-2016 в 10:38. Отправлено: 10:26, 23-08-2016 | #5 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Может быть на PowerShell, подойдет:
dir *.xml | Foreach {"KOD__________R11GA_____R11GB_____R60GB"} { $t = (gc $_.FullName) -match "R11GA|R11GB|R60GB" -replace '</.+|/.+' | % {"$($_.split(">")[1])"} "{0}{1}{2}{3}" -f $_.name.substring(6,8).PadRight(13,"_"),$t[0].PadRight(10,"_"),$t[1].PadRight(10,"_"),$t[2] } |
Последний раз редактировалось Kazun, 23-08-2016 в 10:56. Отправлено: 10:50, 23-08-2016 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата gremlintv2:
"C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" "SELECT R11GA, R11GB, R60GB FROM 'C:\Мои проекты\0004\*.xml'" -i:XML -fMode:Tree -rootXPath:/DECLAR/DECLARBODY Цитата gremlintv2:
Цитата gremlintv2:
Цитата gremlintv2:
Цитата Kazun:
|
|||||
Отправлено: 11:00, 23-08-2016 | #7 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать К сожалению по Вашему скрипту выбивает ошибку: "В текстовом комментарии обнаружен недопустимый знак." =(
Как я это вижу: 1)из папки с xml файлами выбираются все xml-теги и создается эталонный файл znach.txt с найденными тегами 2) по тегу<TIN>, а он есть во всех файлах, выбираются все значения найденных тегов и подставляются в файл znach.txt. |
Последний раз редактировалось gremlintv2, 23-08-2016 в 11:16. Отправлено: 11:09, 23-08-2016 | #8 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Разбор, как xml на PowerShell:
dir *.xml | Foreach {"KOD__________R11GA_____R11GB_____R60GB"} { $text = (Get-Content $_.FullName -Raw) -replace 'xsi:nil="(true|false)"' $xml = [xml]$text.Substring($text.IndexOf('<?xml'), $text.IndexOf('</DECLAR>') - $text.IndexOf('<?xml') + 9) $t = $xml.DECLAR.DECLARBODY "{0}{1}{2}{3}" -f $_.name.substring(6,8).PadRight(13,"_"),$t.R11GA.PadRight(10,"_"),$t.R11GB.PadRight(10,"_"),$t.R60GB } |
Отправлено: 11:19, 23-08-2016 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата gremlintv2:
Цитата gremlintv2:
Kazun, очень хорошо. Осталось таки выяснить у автора весь алгоритм. |
||
Отправлено: 11:22, 23-08-2016 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - Извлечение данных из набора xml файлов | irgen | Скриптовые языки администрирования Windows | 2 | 29-10-2013 15:53 | |
Любой язык - Сравнение списка файлов и каталога с файлами с копированием файлов из каталога | jastreb83 | Скриптовые языки администрирования Windows | 0 | 10-04-2013 09:56 | |
CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой. | Aleks911tat | Скриптовые языки администрирования Windows | 12 | 25-08-2012 22:27 | |
CMD/BAT - [решено] Выбор файлов из списка с последующим копированием и переносом в другую папку | yaoleg2 | Скриптовые языки администрирования Windows | 10 | 04-11-2011 01:28 | |
Сравнение и выбор ПО для сервака | kub-lg | Программное обеспечение Windows | 9 | 10-05-2007 10:53 |
|