regex para filtrar xml [RESOLVIDO]

1. regex para filtrar xml [RESOLVIDO]

Filippe
spolti

(usa Fedora)

Enviado em 21/07/2011 - 13:31h

Galera, alguém pode me dar um help?

Tenho um arquivo xml com umas 8 mil linhas, preciso filtrar somente um bloco (<contact></contact>), porém existem mil blocos com essas mesmas tags.

SEgue abaixo um pedaço do arquivo:


<contact name="iagokatryna_22@hotmail.com">
<cid>-1522289836097208966</cid>
<contactguid>a29caf35-76c0-4922-a599-f1371400cd64</contactguid>
<group>0</group>
<mob>N</mob>
<lists>FL AL</lists>
</contact>
<contact name="danilo_mendes12@hotmail.com">
<cid>4724016128139792443</cid>
<contactguid>90eb6d88-c58e-4035-96c9-acb517b5daff</contactguid>
<space_access>0</space_access>
<group>0</group>
<mob>N</mob>
<lists>FL RL AL</lists>
</contact>
<contact name="myself">
<cid>8159475260928227699</cid>
<psm>Rodízio básico na chimarrão</psm>
<info_lastchange>2011-07-20T03:40:52.143-07:00</info_lastchange>
<login>filippespolti@rock.com</login>
<mfn>Spolti</mfn>
<mob>N</mob>
</contact>
<contact name="joreufloripa@hotmail.com">
<cid>-4080875217690425797</cid>
<contactguid>b5b56a69-cd41-4cda-ba41-faf39edb59d7</contactguid>
<space_access>0</space_access>
<group>0</group>
<mob>N</mob>
<lists>FL RL AL</lists>
</contact>



Preciso pegar o seguinte bloco inteiro:
<contact name="myself">
<cid>8159475260928227699</cid>
<psm>Rodízio básico na chimarrão</psm>
<info_lastchange>2011-07-20T03:40:52.143-07:00</info_lastchange>
<login>filippespolti@rock.com</login>
<mfn>Spolti</mfn>
<mob>N</mob>
</contact>

Alguém sabe como fazer isso?

Vlws.


  


2. Re: regex para filtrar xml [RESOLVIDO]

Filippe
spolti

(usa Fedora)

Enviado em 21/07/2011 - 14:25h

Um amigo me ajudo e fico assim a solução:

perl -ne '$v=1 if/name="myself"/;push@m,$_ if$v;if($v&&/\/contact/){print@m;$v=0}' file.xml








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts