将 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
我刚接触 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