![]() |
Поиск неизвестной строки в файле, ограниченной известными символами
Сразу прошу прощения, если подобный вопрос уже задавался. Я так и не смог достаточно кратко его сформулировать для поиска, чтобы найти аналог.
Задача в следующем: имеется XML-файл, формирующийся автоматом при установке программы. В нем, кроме всего прочего, есть переменная величина, ограниченная тэгами (в моем случае выглядит: "<publisherID>4875E02D9FB21EE389F73B8D1702B320485DF8CE.1</publisherID>"). Какой будет эта величина, окруженная тэгами publisherID и даже сколько символов содержит, неизвестно. Необходимо считать эту строку, какая бы она не была, и передать в переменную. Ах да, еще желательно проверить на наличие самого файла, в котором находится искомая строка. |
Код:
@echo off Код:
@echo off |
на тот случай, если количество тегов в строке несколько:
Код:
@Echo Off |
Коллеги,
Подниму тему, ибо похожая задача. Нужно найти ряд параметров и вывести их значения. Только пара выглядит так: Код:
param="value" Спасибо! |
Цитата:
Что если так — по «=» отбирать строки и по нему же делить: Код:
@echo off |
Я не очень понял, как использовать этот код. Наверное, мне стоило полнее сформулировать задачу :)
В файле содержится много различной информации, в том числе XML вытянутый в одну строку. Скажем, там может быть 7-8 тысяч символов в дюжине строк. Пара param="value" фактически является атрибутом XML-узла. Есть мысли о PowerShell, но не знаю, как он парсит XML, смешанный с другим мусором :) |
Цитата:
Код:
(gc your.file) -match "\<\?xml" | out-file -encoding utf8 temp.xml Код:
$xml = new-object xml При условии, что этот xml будет валидным. |
Foreigner, спасибо, парсинг XML я проходил, когда делал CheckBootSpeed, а вот первую команду не знал.
Файл на работе (и по тем же причинам я его не публикую), надо посмотреть. ЕМНИП, нужная информация может быть просто во фрагментах XML-кода или в отдельных элементах, просто выдержанных в формате XML. |
В итоге пришел именно к парсингу XML средствами PowerShell, задавая не только начало, но и конец диапазона с помощью (.+)
Почему-то в отдельный файл вытягивались данные не с начала диапазона, а с начала строки, на которой он находился. Но это было легко поправить с HTML Tidy (тем более, что все равно это было необходимо по другой причине). parse-xml.ps1 Код:
#вытягиваем данные из файла source-file.txt в temp.xml Код:
<CUSTOM_XML v="5.0 " xv="109" s="20090815" cv="0001"> Код:
tidy.exe -m -config tidyconf.txt "temp.xml" Код:
input-xml: y |
Время: 02:19. |
Время: 02:19.
© OSzone.net 2001-