为了账号安全,请及时绑定邮箱和手机立即绑定

PHP Xpath:如何从 WSDL 上的任何方法获取操作 URL?

PHP Xpath:如何从 WSDL 上的任何方法获取操作 URL?

PHP
胡说叔叔 2022-05-27 16:23:07
我正在尝试仅使用所需的操作(和 wsdl)从任意 WSDL 中恢复操作 URL:$method = "consultarProcesso";$wsdl = "https://webserverseguro.tjrj.jus.br/MNI/Servico.svc?wsdl";$xmlWSDL = new SimpleXMLElement(file_get_contents($wsdl));$xpath = "//*[local-name()='operation'][@name='$method']";$result = $xmlWSDL->xpath($xpath);var_dump($result[0]);问题是我不知道如何从 $result[0] 获取节点值以在此示例中恢复所需的值:http://www.cnj.jus.br/servico-intercomunicacao-2.2.2/consultarProcesso我能做些什么来实现这一目标?
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

有几种方法可以input直接使用xpath. 您可以local-name()按目前的方式使用:


$xpath = "//*[local-name()='operation'][@name='$method']/*[local-name()='input']";

或直接在中指定命名空间xpath:


$xpath = "//wsdl:operation[@name='$method']/wsdl:input";

获得所需元素后,您可以查看其命名空间属性Action:


$result = $xmlWSDL->xpath($xpath)[0];

$namespaces = $result->getNameSpaces();

foreach ($namespaces as $ns) {

    if (isset($result->attributes($ns)['Action'])) $url = (string)$result->attributes($ns)['Action'];

}

echo $url;

输出:


http://www.cnj.jus.br/servico-intercomunicacao-2.2.2/consultarProcesso


查看完整回答
反对 回复 2022-05-27
?
UYOU

TA贡献1878条经验 获得超4个赞

您可以使用 和 的命名空间参数检索此SimpleElement::children信息SimpleElement::attributes:


// Retrieve the `wsdl:` namespaced children of the operation

[$input, $output] = $result[0]->children('wsdl', true);


// Retrieve the `wsaw:`-namespaced attributes of the input element,

// then grab the one named Action

$actionAttribute = $input->attributes('wsaw', true)->Action;


// Convert its value into a string

$actionUrl = (string)$actionAttribute;

(显然,出于本答案的目的,这被过度评论了。)


查看完整回答
反对 回复 2022-05-27
  • 2 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信