首页 > 解决方案 > 在 Bash 中使用 xmllint 从 WSDL 文件中检索信息

问题描述

我可以使用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 错误:未定义的命名空间前缀

xmlXPathEval:评估失败

XPath 评估失败

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

标签: xmlbashscriptingwsdl

解决方案


找到了解决方案,它是使用xmlstarlet

更多信息也可以在这个答案中找到


推荐阅读