Bash:
处理XML

如何操作:

以下是在Bash中解析XML的方法。使用工具?xmllint和xmlstarlet。遍历XML元素?当然可以。示例与样本输出:

# 假设已安装xmlstarlet
# 通过以下命令安装:apt-get install xmlstarlet

# 解析XML内容
cat <<EOF > sample.xml
<fruits>
  <fruit name="Apple"/>
  <fruit name="Banana"/>
</fruits>
EOF

# 使用xmlstarlet提取名称
xmlstarlet sel -t -m "//fruit" -v "@name" -n sample.xml

# 输出应当为:
# Apple
# Banana

深入了解

回到90年代,XML作为SGML的更简单替代品出现,但比HTML更有结构。现在,它有了伴侣——例如JSON、YAML。但XML仍在发挥作用,尤其是在配置和基于SOAP的网络服务中。

在工具方面,xmllint适用于XML验证、xpath查询。xmlstarlet是XML操作的多功能刀——查询、编辑、验证、转换。在bash脚本中,它们是XML任务的超级英雄。

内部机制方面,xmllint使用libxml2——XML C解析器。它速度快,但错误消息?难以理解。至于xmlstarlet?递归模板和EXSLT支持。思维挑战,但功能强大。

另请参阅