#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');
.......