|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Парсинг xml файла |
|
PowerShell - [решено] Парсинг xml файла
|
Старожил Сообщения: 227 |
Всем добрый вечер!
Имеется телепрограмма в формате xml https://iptvx.one/EPG Никак не получается распарсить xml до нужного формата... Пример xml: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE tv SYSTEM "https://iptvx.one/xmltv.dtd"> <tv generator-info-name="IptvX.one" generator-info-url="https://iptvx.one/"> <channel id="no_epg"><display-name>NO EPG</display-name></channel> <channel id="no_epg_cinema"><display-name>NO EPG Cinema</display-name></channel> <channel id="no_epg_mult"><display-name>NO EPG Mult</display-name></channel> <channel id="no_epg_music"><display-name>NO EPG Music</display-name></channel> <channel id="no_epg_news"><display-name>NO EPG News</display-name></channel> <channel id="no_epg_sport"><display-name>NO EPG Sport</display-name></channel> <channel id="0x0-fireplace-hd"><display-name>Горящий камин</display-name><display-name>Ланет HOME</display-name><display-name>Lanet Home</display-name><display-name>0x0 Fireplace HD</display-name><icon src="https://iptvx.one/icn/kamin.png"/></channel> <channel id="1-balt-ee"><display-name>PBK EE</display-name><display-name>PBK Эстония</display-name><display-name>Первый Балтийский канал Эстония</display-name><display-name>Первый Балтийский Эстония</display-name><icon src="https://iptvx.one/icn/1-balt.png"/></channel> <channel id="1-balt-lt"><display-name>PBK LT</display-name><display-name>PBK Литва</display-name><display-name>Первый Балтийский канал Литва</display-name><display-name>Первый Балтийский Литва</display-name><icon src="https://iptvx.one/icn/1-balt.png"/></channel> <channel id="1-balt-lv"><display-name>PBK LV</display-name><display-name>Pirmais Baltijas Kanāls</display-name><display-name>Первый Балтийский канал</display-name><display-name>Первый Балтийский</display-name><display-name>Первый Балтийский Латвия</display-name><icon src="https://iptvx.one/icn/1-balt.png"/></channel> <channel id="1-music-hu"><display-name>1 Music Channel Hungary</display-name><icon src="https://iptvx.one/icn/1-music-hu.png"/></channel> ... и т.д. </tv> получается таблица из id и привязанных к нему имён каналов, а ссылки на лого нет... В идеале нужно получить 2 файла на выходе такого формата: id.txt: 1-balt-ee,PBK EE 1-balt-ee,PBK Эстония 1-balt-ee,Первый Балтийский канал Эстония 1-balt-ee,Первый Балтийский Эстония ... Но это всё можно уже потом сделать заменами... А как добавить в таблицу ссылку на лого ? Подскажите, пожалуйста, кто в этой теме. |
|
Отправлено: 20:48, 03-03-2020 |
Старожил Сообщения: 227
|
Профиль | Отправить PM | Цитировать Получилось вытащить ссылки на лого, хотя и немного "криво":
$a = Select-Xml -Path .\epg.xml -XPath "//tv/channel" $a.Node | ForEach {$_.id+','+$_.'display-name';$_.icon} no_epg,NO EPG no_epg_cinema,NO EPG Cinema no_epg_mult,NO EPG Mult no_epg_music,NO EPG Music no_epg_news,NO EPG News no_epg_sport,NO EPG Sport 0x0-fireplace-hd,Горящий камин Ланет HOME Lanet Home 0x0 Fireplace HD src --- https://iptvx.one/icn/kamin.png 1-balt-ee,PBK EE PBK Эстония Первый Балтийский канал Эстония Первый Балтийский Эстония https://iptvx.one/icn/1-balt.png 1-balt-lt,PBK LT PBK Литва Первый Балтийский канал Литва Первый Балтийский Литва https://iptvx.one/icn/1-balt.png 1-balt-lv,PBK LV Pirmais Baltijas Kanāls Первый Балтийский канал Первый Балтийский Первый Балтийский Латвия https://iptvx.one/icn/1-balt.png |
Отправлено: 09:43, 04-03-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать [xml] $xdoc = get-content "C:\temp\epg.xml" -Encoding utf8 $xdoc.SelectNodes("//channel") | %{ $cc = $_ $cc."display-name" | %{ Out-File c:\temp\id.txt -InputObject ($cc.id + ',' + $_) -Encoding UTF8 -Append Out-File c:\temp\logo.txt -InputObject ($cc.icon.src + ',' + $_) -Encoding UTF8 -Append } } |
Отправлено: 12:05, 04-03-2020 | #3 |
Старожил Сообщения: 227
|
Профиль | Отправить PM | Цитировать AAT666, спасибо!
Но, к сожалению не работает такой код, ошибка: Cannot convert value "System.Object[]" to type "System.Xml.XmlDocument". Error: "Невозможно вставить указанный узел в качестве действительного дочернего узла данного узл а, т.к. указанный узел имеет неверный тип." At line:1 char:1 + [xml] $xdoc = get-content .\epg.xml. -Encoding utf8 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException + FullyQualifiedErrorId : RuntimeException You cannot call a method on a null-valued expression. At line:3 char:1 + $xdoc.SelectNodes("//channel") | %{ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Спасибо большое за помощь! |
Отправлено: 12:25, 04-03-2020 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - парсинг xml | firstarey | Скриптовые языки администрирования Windows | 4 | 31-12-2014 13:37 | |
PowerShell - [решено] парсинг xml | firstarey | Скриптовые языки администрирования Windows | 2 | 17-04-2014 14:25 | |
CMD/BAT - [решено] парсинг xml :) | firstarey | Скриптовые языки администрирования Windows | 10 | 07-03-2014 12:52 | |
CMD/BAT - Парсинг XML/TXT | mxm199 | Скриптовые языки администрирования Windows | 10 | 17-07-2012 12:34 | |
PowerShell - [решено] парсинг XML файла | dosperados | Скриптовые языки администрирования Windows | 2 | 02-07-2012 21:02 |
|