在Linux系统管理中,经常需要通过Shell脚本处理XML文件。本文将详细介绍5种主流方法,并提供可直接运行的代码示例。
xmlstarlet是最强大的XML命令行工具之一,需先安装:
sudo apt-get install xmlstarlet # Debian/Ubuntu
sudo yum install xmlstarlet # CentOS/RHEL
xmlstarlet sel -t -v '/root/node' file.xml
xmlstarlet sel -t -v "//book[price>35]/title" books.xml
libxml2自带的xmllint工具也支持XPath查询:
xmllint --xpath '//element/@attribute' file.xml
对于格式规范的简单XML,可用正则表达式提取:
sed -n 's/.*\([^<]*\)<\/title>.*/\1/p' file.xml
awk -F'[<>]' '//{print $3}' file.xml
在Shell中调用Python处理复杂XML:
python3 -c '
import xml.etree.ElementTree as ET
tree = ET.parse("file.xml")
print(tree.find(".//node").text)
'
对于企业级应用,建议使用:
xmllint --valid file.xml通过以上方法,您可以轻松在Shell环境中处理各种XML解析需求。根据实际场景选择合适方案,简单查询用正则,复杂操作推荐xmlstarlet或专业解析库。