xml - 从没有xpath的xml中提取数据
问题描述
这是我的问题,我在 UNIX 上工作,我有一个包含在字符串foo中的 xml 文件:
echo $foo
<a> <b> <c> bar </c> </b> </a>
我想得到值bar。我可以使用xmllint但我没有--xpath选项。并不是说foo是 UNIX 变量而不是文件。
我发现的唯一解决方案是运行:
echo $foo | xmllint --shell <(cat) <<<'xpath a/b/c/text()'
但它会产生一个非常冗长的输出:
/ > Object is a Node Set :
Set contains 1 nodes:
1 TEXT
content= bar
/ >
我只想得到“酒吧”。谢谢你的帮助 !
解决方案
您可以尝试替换xpath
为cat
xmlshell-command 来调用。这应该输出如下内容:
/ > -------
bar
第一行来自 xmlshell 的提示符。要仅获取最后一行,请使用您喜欢的工具仅提取第 2 行,例如:
foo="<a> <b> <c>_ bar _</c> </b> </a>"
echo "cat //c/text()" | xmllint --shell <(echo $foo) | awk 'NR==2'
推荐阅读
- installation - 如何在 Windows 10 上安装 Monodevelop IDE
- php - 如何仅在 Laravel 中进行管理员验证后保存更新的数据
- latex - LaTeX 中的表格:使用两列模板在单列中对齐表格
- java - 带有文件扩展名的 Java Spring 结束 URL
- java - 如何通过Java Driver获取mongo中集合的所有属性
- graphite - 如何在 Graphite 中添加指标的所有非空值?
- php - 在 if 条件内调用函数
- python - 在没有 Tee 的 Python 中克隆生成器
- r - 更改图例标签而不更改图例标记或数量
- php - 如何在 PHP 中的 strtotime() 中检查日期是否超过 7 天