xml에 다음 태그가 포함되어 있는지 xmllint를 통해 확인할 수 있습니까?
이름
유니크_문자열
버전
세 개의 태그가 있는 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