como verificar o XML que inclui tags específicas

1

é possível verificar por xmllint se xml inclui as seguintes tags:

  1. Nome

  2. uniq_String

  3. Versão

exemplo de xml com três tags:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- tasks configuration file -->
<tasks>
   <Name>destry_srorage_luns</Name>
   <uniq_String>destry_srorage_luns run once at day</uniq_String>
    <Version>14.03.23</Version>

se não estiver usando xmllint

qual a outra alternativa para verificar as tags são definidas em xml com o awk / sed / perl oneliner?

A saída esperada no caso xml inclui as duas tags - Name, uniq_String, Version

 XML_VALID=TRUE

saída esperada no caso de xml NOT include both tags - Nome, uniq_String, Version

 XML_VALID=FALSE
    
por yael 18.01.2018 / 08:01

1 resposta

1

Xmlstarlet solução:

if xmlstarlet sel -Q -t -c "//*[Name and uniq_String and Version]" input.xml; then
    echo "XML_VALID=TRUE"
else 
    echo "XML_VALID=FALSE"
fi

link

xmllint solução alternativa:

if xmllint --xpath "//*[Name and uniq_String and Version]" input.xml &>/dev/null; then
    echo "XML_VALID=TRUE"
else 
    echo "XML_VALID=FALSE"
fi
    
por 18.01.2018 / 08:32