Так что у меня есть XML с кучей ссылок. Я хочу удалить все, что не является URL. Например, в настоящее время это выглядит примерно так:

<update extract="1">
            <kb>KB2276594</kb>
            <date>2011/01/18</date>
            <size>348 KB</size>
            <category>Hotfix</category>
            <name>Windows6.1-KB2276594-x64.msu</name>
            <description>"Error – Sent to Printer" error when you try to send a large print job to a Web Services for Devices-based printer in Windows Server 2008 R2 or in Windows 7</description>
            <url>http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix354908/7600/free/427003_intl_x64_zip.exe</url>
        </update>

В результате я хочу получить чистый XML-файл с URL-адресами подряд (сохранение их порядка не имеет значения). Как это:

http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix354908/7600/free/427003_intl_x64_zip.exe
http://hotfixv4.microsoft.com/.Net%20Framework%202.0%20–%20Win7%20SP1,%20Windows%20Server%202008%20R2%20SP1%20(CBS)/sp2/DevDiv947612/50727.5661/free/430877_intl_x64_zip.exe

А затем скопируйте полученные URL-адреса в буфер обмена одновременно. Это на Windows 7 x64. Методы командной строки, Powershell v3 и Notepad++ являются регулярными. Заранее спасибо.

2 ответа2

2

Regex плохо подходит для анализа XML.

Powershell может анализировать XML примерно так:

[xml]$xml = Get-Content {your_xml_file.xml}
$xml.xpath.to.update | Select-Object -Property url

Поскольку вы не опубликовали полный XML, трудно сказать, что такое xpath.to.update, но это общая идея.

0

Вы можете использовать плагин XML Tools для Notepad++. Notepad++ загрузит и установит его из менеджера загрузок в разделе «Плагины -> Менеджер плагинов».

Он может оценивать XPath и генерировать список, который вы можете скопировать / вставить в Excel / Open Office, где все ваши URL-адреса находятся в одном столбце.

Я использовал ваш XML-фрагмент в качестве примера, сделал несколько записей с разными URL-адресами и поместил их все в элемент "test". Нажмите на один из узлов URL, затем использовали Плагины -> Инструменты XML -> Текущий путь XML (это копирует выражение), затем Плагины -> Инструменты XML -> Оценить выражение XPath, вставить в выражение, нажать кнопку Оценить и данные был там, чтобы скопировать в Excel.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .