2015-10-28 3 views
2

Я пытаюсь получить корневой узел элемента simpleXml, но он ничего не находит. Это мой пример кода:Как получить корень с помощью функции xpath simplexml

$xml = <<<XML 
<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///C:/LSP%20iShip/LSP%20Dossiers/Standard%20iShip%20Mappings/iShip%20XSD's/iOrder.xsd"> 
    <Reference>21EW400084SA</Reference> 
    <Name>John</Name> 
    <Street1>Ally 3</Street1> 
    <Zipcode>0</Zipcode> 
    <City>ESPANA</City> 
    <CountryCode>ES</CountryCode> 
</Order> 
XML; 

$simpleXML = simplexml_load_string($xml); 

var_dump($simpleXML->xpath('/')); 

var_dump приводит к выходу:

array(0) {} 

XPath запрос в нашей основной программе является входной переменной. Это может быть корень или путь к ребенку. Когда переменный ввод равен '/', он ничего не возвращает (как вы можете видеть в приведенном выше примере). Как я могу заставить его вернуть корневой узел?

ответ

0

Запрос xpath / ничего не вернет, потому что это пустой поиск. Ведущий / говорит, что запрос начинается с корня, но ему все равно нужно что-то искать. Я подозреваю, что вы хотите попробовать $simpleXML->xpath('/Object') или $simpleXML->xpath('/*').

0

Правильное выражение XPath - /*.

var_dump($simpleXML->xpath('/*')); 

или, для SimpleXMLElement объекта:

var_dump($simpleXML->xpath('/*')[0]); 
Смежные вопросы