是否可以通过 xmllint 检查 xml 是否包含以下标签:
姓名
uniq_字符串
版本
具有三个标签的 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
使用 awk/sed/perl oneliner 检查 xml 中定义的标签的其他替代方法是什么?
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