Linux
如何驗證包含特定標籤的 XML
是否可以通過 xmllint 檢查 xml 是否包含以下標籤:
- 姓名
- uniq_String
- 版本
帶有三個標籤的 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
**
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