如何验证包含特定标签的 XML

如何验证包含特定标签的 XML

是否可以通过 xmllint 检查 xml 是否包含以下标签:

  1. 姓名

  2. uniq_字符串

  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

使用 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

相关内容