将 xpath -q -e 命令转换为 xmllint --xpath one

Convert xpath -q -e command to xmllint --xpath one

我刚接触 XML 个文件,想转换这个命令:

xpath -q -e "/ns2:softwareSystem/module/rootPath[not(@xsi:type)]/@name"\ file.xml

到这个 xmllint --xpath

这里有一个例子:https://github.com/apache/phoenix/pull/170/commits/16059876613ecb3a13b086adad9a8a861f04d1dc

感谢帮助

您要找的是:

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

请注意,当您可以在应用程序中声明名称空间时,通常不建议使用 local-name()

如果可以,最好使用xmlstarlet,因为命名空间和命名空间前缀更好handled(您可以直接使用/ns2:softwareSystem/_:softwareSystem)。

EDIT :如果你正在处理一个变量(例如:variable="foo"),你可以使用这样的东西:

xmllint --xpath "string(//*[local-name()='softwareSystem']/module[@name='"$variable"']/@id)" file.xml