【发布时间】:2014-05-12 17:17:47
【问题描述】:
很抱歉,我会尝试更好地解释它:
我必须做一个执行以下操作的脚本 -> 做一个 wsdl 的 curl 或 wget 并找到以下句子:
<schema targetNamespace="http://net.jboss.org/jmx" xmlns="asdasd2001/XMLSchema">
<import namespace=".xmlsoap.org/soap/encoding/" />
<simpleType name="ObjectNameType">
<simpleContent>
<extension base="xsd:string" />
</simpleContent>
</simpleType>
</schema>
如果 wsdl 上存在这些句子,则返回一个布尔值 - 所以我想使用 grep 然而,它没有按我预期的那样工作,因为它会检查是否有任何句子在 wsdl 上。示例
`PcspI01Service%3Fwsdl | grep -F -f ex.bko
**<import namespace="org/soap/encoding/" />
</schema>
<import namespace="org/soap/encoding/" />
</schema>**
<schema targetNamespace="rg/2001/XMLSchema">
<import namespace="soap/encoding/" />
<simpleType name="ObjectNameType">
<simpleContent>
<extension base="xsd:string" />
</simpleContent>
</simpleType>
</schema>`
在这个例子中,它向我展示了这些行
`<import namespace="org/soap/encoding/" />
</schema>`
存在于文件中,但这对我没有帮助,我需要匹配所有行并按照它们的顺序进行
现在更清楚了吗?
提前感谢大家!
【问题讨论】:
-
这看起来是一件非常间接和脆弱的事情。你确定你不想改为例如查找所有包含名为“ObjectNameType”且扩展名为“xsd:string”的 simpleType 的文件?
-
你建议怎么做?问题是我需要确保订单得到尊重,以便知道它属于那个部分。我正在做一个运行状况检查脚本来获取 web 服务的 wsdl,如果我发现这些语句,我就知道该 web 服务将失败。
-
我建议使用能够理解 XML 的 xmlstarlet 或 xmllint 等 XML 工具进行匹配。你没有解释为什么这些行意味着有一个错误,所以我不能更具体。
-
我试着澄清一下,如果现在更清楚请告诉我
-
Bad: "我需要在 XML 文件中找到这一行,然后是这一行,然后是这一行。"好:“我需要找到名为“ObjectNameType”的 simpleType 节点没有“restriction”元素的 XML 文件,因为这是一个错误。”