将xpath-q-e命令转换为xmllint--xpath-one
我对XML文件非常熟悉,希望转换此命令: xpath-q-e”/ns2:softwareSystem/module/rootPath[not(@xsi:type)]/@name“\file.xml 对于这个xmllint--xpath 以下是一个例子:将xpath-q-e命令转换为xmllint--xpath-one,xml,linux,xpath,xml-parsing,Xml,Linux,Xpath,Xml Parsing,我对XML文件非常熟悉,希望转换此命令: xpath-q-e”/ns2:softwareSystem/module/rootPath[not(@xsi:type)]/@name“\file.xml 对于这个xmllint--xpath 以下是一个例子: 感谢您的帮助您需要的是: xmllint --xpath "//*[local-name()='softwareSystem']/module/rootPath[not(@*[local-name()='type'])]/@name&q
感谢您的帮助您需要的是:
xmllint --xpath "//*[local-name()='softwareSystem']/module/rootPath[not(@*[local-name()='type'])]/@name" file.xml
请注意,当您可以在应用程序中声明名称空间时,通常不建议使用local-name()
如果可以,可能最好使用xmlstarlet
,因为名称空间和名称空间前缀更好(您可以直接使用/ns2:softwareSystem
或/\ux:softwareSystem
)
编辑:如果您正在处理一个变量(例如:variable=“foo”
),您可以使用以下内容:
xmllint --xpath "string(//*[local-name()='softwareSystem']/module[@name='"$variable"']/@id)" file.xml
这是一个变量xpath-q-e“字符串(/ns2:softwareSystem/module[@name=\“$variable\”]/@id)”file.xml完美答案。非常感谢@E.wiest你能看看这个问题吗