【问题标题】:how to add break line in xmllint command如何在 xmllint 命令中添加换行符
【发布时间】:2020-11-26 11:37:39
【问题描述】:

我有以下命令

xmllint --xpath "//*[local-name()='softwareSystem']/module/rootPath[not(@*[local-name()='type'])]/@name" file.xml

并希望将每个模块(每个匹配)放在一个新行上

感谢帮助

【问题讨论】:

  • 如果使用 xmllint 没有得到答案,请尝试切换到 xmlstarlet 或 xidel。
  • 我是否也需要更改语法?因为我从未使用过 xmlstarlet。或者您能否使用带有新行的 xmlstarlet 来编辑我的命令?

标签: xml xpath xmllint


【解决方案1】:

我没有你的 html,所以我不得不猜测,但是对于 xmlstarlet,例如,尝试类似:

xmlstarlet sel -t -m "//*[local-name()='softwareSystem']/module/rootPath[not(@*[local-name()='type'])]" -v $'concat(@name,"\n")' file.xml

或

xmlstarlet sel -t -m "//*[local-name()='softwareSystem']/module/rootPath[not(@*[local-name()='type'])]" -v $@name file.xml -n file.xml

看看它是否有效。

【讨论】:

  • 这个命令你可以转换它吗:xpath -q -e "/ns2:softwareSystem/module/rootPath[not(@xsi:type)]/@name" file.xml
  • @Stephan 可能;但看到一些涉及的 ​​xml 会有所帮助(不幸的是,命名空间总是一个问题),无论如何,您应该将其作为一个单独的问题发布。
  • 不要对给出的答案提出问题,但要说明为什么该答案适用于您,或不适用,并说明为什么它不适用!
猜你喜欢
  • 2010-12-10
  • 1970-01-01
  • 2022-01-08
  • 2013-07-12
  • 2013-09-03
  • 2011-07-01
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多