【问题标题】:Extract data from xml without xpath从没有xpath的xml中提取数据
【发布时间】:2021-03-20 08:06:45
【问题描述】:

这是我的问题,我在 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 选项”?另外,你能用其他有它的东西吗?
  • 我有一个非常旧的 xmllint 版本...

标签: xml parsing xmllint


【解决方案1】:

您可以尝试将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'

【讨论】:

  • 完美,这就是我正在寻找的命令,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
相关资源
最近更新 更多