특정 태그가 포함된 XML의 유효성을 검사하는 방법

특정 태그가 포함된 XML의 유효성을 검사하는 방법

xml에 다음 태그가 포함되어 있는지 xmllint를 통해 확인할 수 있습니까?

  1. 이름

  2. 유니크_문자열

  3. 버전

세 개의 태그가 있는 XML 예:

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

사용하지 않는 경우xmllint

xml에 정의된 태그를 확인하기 위해 awk/sed/perl oneliner를 사용하는 것의 다른 대안은 무엇입니까?

XML에 Name, uniq_String, Version이라는 두 개의 태그가 포함된 경우 예상되는 출력

 XML_VALID=TRUE

xml에 두 개의 태그(Name, uniq_String, Version)가 포함되지 않은 경우 예상되는 출력

 XML_VALID=FALSE

답변1

Xmlstarlet해결책:

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

http://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.html#idm47077139652416


xmllint대체 솔루션:

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

관련 정보