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

我正在尝试仅使用所需的操作(和 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

我能做些什么来实现这一目标?


胡说叔叔
浏览 171回答 2
2回答

慕村225694

有几种方法可以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

UYOU

您可以使用 和 的命名空间参数检索此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;(显然,出于本答案的目的,这被过度评论了。)
打开App,查看更多内容
随时随地看视频慕课网APP