Remove todos os URLs, exceto os URLs, dos arquivos XML

0

Então eu tenho um XML com vários links. O que eu quero é remover tudo o que não é um URL. Por exemplo, atualmente parece algo como isto:

<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>

O que eu quero como resultado é um arquivo XML limpo com URL-s em uma linha (preservar sua ordem não é importante). Assim:

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

Em seguida, copie as URLs resultantes para a área de transferência de uma só vez. Isso é no Windows 7 x64. Os métodos de comando Promt, Powershell v3 e Notepad ++ regex são aceitáveis. Agradecemos antecipadamente.

    
por TMRW 20.01.2014 / 17:41

2 respostas

0

Você pode usar o plug-in XML Tools para o Notepad ++. O Notepad ++ irá baixar e instalar a partir do gerenciador de download em Plugins - > Gerenciador de plugins.

Ele pode avaliar XPaths e gerar uma lista que você pode copiar / colar no Excel / Open Office, onde todas as suas URLs estão em uma coluna.

Eu usei o seu snippet XML como exemplo, fiz várias entradas com URLs diferentes e coloquei todas em um elemento "test". Clicou em um dos nós de URL e usou Plugins - > Ferramentas XML - > Caminho XML atual (copia a expressão), depois Plugins - > Ferramentas XML - > Avalie a Expressão XPath, colada na expressão, clique em Avaliar e os dados estavam lá para copiar para o Excel.

    
por 20.01.2014 / 21:05
2

O Regex é ruim para analisar XML.

O Powershell pode analisar XML com algo parecido com isto:

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

Como você não postou o XML completo, é difícil dizer qual é o xpath.to.update, mas essa é a idéia geral.

    
por 20.01.2014 / 18:29