Como descobrir o conteúdo de um arquivo XML usando o Unix Sed / Awk? [duplicado]

1

Eu tenho um arquivo XML (MyXML.xml) assim:

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns3:GetAllInfoFromRest xmlns:ns2="http://com.lanuk.cfe/b2_7/service/objects" xmlns:ns3="http://com.lanuk.cfe/b2_7/service/operations">
            1111,GH43567,Hamburger,GET,278598655,\n000001,                    ,Kunal,Bhyuo,Ramond,856 K. 98 Rd,                                        ,                                        ,Tripura,AGT,INDIA,856987,                    ,S,S,S,8956,6666
        </ns3:GetAllInfoFromRest>
    </S:Body>
</S:Envelope>

Agora, preciso remover o conteúdo SOAP e todos os atributos de tag desse xml e obter apenas a resposta da string 1111,GH43567,Hamburger,GET,278598655,\n000001, ,Kunal,Bhyuo,Ramond,856 K. 98 Rd, , ,Tripura,AGT,INDIA,856987, ,S,S,S,8956,6666 .

Como posso fazer isso com awk ou sed ?

Eu tentei assim:

$ xgawk -lxml 'XMLATTR["xmlns:ns3"]=="http://com.lanuk.cfe/b2_7/service/operations"{print $2}' MyXML.xml

Mas, obviamente, estou cometendo algum erro devido ao qual ele não está funcionando. Alguém pode sugerir alguma outra maneira de contornar isso?

    
por The Dark Knight 19.09.2013 / 14:17

1 resposta

5

sed/awk são realmente sobre expressões regulares . verifique esta resposta em stackoverflow porque analisar HTML / XML com expressões regulares é uma idéia ruim .

para XML, você realmente precisa criar um DOM do documento e, depois, localizar suas informações. existem ferramentas de cmdline como xmlstar que permitem obter informações de documentos XML.

mas não tente usar sed / awk para analisar XML

PS: claro, você pode criar uma expressão regular simples que pode extrair as informações necessárias nos arquivos que você encontra na vida real. por exemplo. o seguinte irá imprimir a 5ª linha do documento, que (no seu exemplo) contém a informação relevante.

# stupid and naive approach:
sed '5!d' MyXML.xml

mas isso faz uma suposição sobre o layout do arquivo, que tem nada para fazer com XML. pode funcionar para um gerador muito específico do arquivo dado, mas não é garantido que funcione com qualquer arquivo XML seguindo a mesma estrutura (e os dados estruturados são o que o XML é)

    
por 19.09.2013 / 14:47

Tags