XPath в DOMDocument в файле WSDL

#php #xpath #wsdl #domdocument

#php #xpath #wsdl #domdocument

Вопрос:

У меня возникли некоторые проблемы с запросом make к XPath. Я пытаюсь загрузить файл WSDL, и они получают несколько узлов, используя XPath.

 $DOMDocument = new DOMDocument();
$DOMDocument->loadXML($wsdl);
$DOMXpath = new DOMXPath($DOMDocument);
$elements = $DOMXpath->query('//definitions//binding');
var_dump($elements);
  

Результат:

 class DOMNodeList#15 (1) {
  public $length =>
  int(0)
}
  

Вот файл WSDL:http://pastebin.com/YDRzbq3x

Как сделать правильный запрос XPath для обхода узлов.

Ответ №1:

Ваш XML имеет пространство имен по умолчанию ( xmlns="http://schemas.xmlsoap.org/wsdl/" ). В этом случае вам необходимо зарегистрировать префикс, указывающий на URI пространства имен по умолчанию, затем использовать этот префикс в вашем запросе XPath :

 .......
$DOMXpath->registerNamespace('d', "http://schemas.xmlsoap.org/wsdl/");
$elements = $DOMXpath->query('//d:definitions//d:binding');
.......