在 Bash 中使用 xmllint 从 WSDL 文件中检索信息

Retrieve information from WSDL file using xmllint in Bash

我可以使用 xmllint 从“.wsdl”文件中检索信息,就像我从 Bash 中的“.xml”文件中检索信息一样吗?

为了说明问题,我有一个 xml 文件,我使用 xmllint 在我的 Bash 脚本中通过以下方式获取某些信息:

init_variable=$(xmllint --xpath 'string(/tag1/tag2/tag3/attribute)' SampleMessages.xml)

其中“标签”代表我 xml 中的层次结构,属性是我从中检索信息的属性的内容。当文件为“.xml”

时,此代码有效

当我尝试对“.wsdl”文件执行相同操作时,出现错误。本质上,我正在尝试使用 xmllint 执行与上述相同的操作。但是,该文件中的每个标记都以 wsdl: 开头(参见下面的示例)。

我正在尝试 运行 以下内容:

serviceDescription=$(xmllint --xpath 'string(/wsdl:tag1/wsdl:tag2/wsdl:attribute)' ExampleFile.wsdl)

当我 运行 bash 脚本时,我的终端出现以下错误:

XPath error : Undefined namespace prefix

xmlXPathEval: evaluation failed

XPath evaluation failure

我不确定这个错误是什么意思,我也不知道我是否可以在“.wsdl”文件上 运行 xmllint 就像我在“.xml

找到解决办法,就是用xmlstarlet

更多信息也可以在this answer

中找到