У меня есть тестовый файл, где я пытаюсь проанализировать строку xml с использованием метода xpath SimpleXML.xml xpath не возвращает значение узла
Когда я пытаюсь получить доступ к значениям узлов напрямую с помощью xpath, я получаю пустой вывод, но когда я использую xpath для захвата элементов, а затем прокручиваю их, он отлично работает.
Когда я смотрю документацию, мне кажется, что мой синтаксис должен работать. Есть что-то, что мне не хватает?
<?php
$xmlstring = '<?xml version="1.0" encoding="iso-8859-1"?>
<users>
<user>
<firstname>Sheila</firstname>
<surname>Green</surname>
<address>2 Good St</address>
<city>Campbelltown</city>
<country>Australia</country>
<contact>
<phone type="mobile">1234 1234</phone>
<url>http://example.com</url>
<email>[email protected]</email>
</contact>
</user>
<user>
<firstname>Bruce</firstname>
<surname>Smith</surname>
<address>1 Yakka St</address>
<city>Meekatharra</city>
<country>Australia</country>
<contact>
<phone type="landline">4444 4444</phone>
<url>http://yakka.example.com</url>
<email>[email protected]</email>
</contact>
</user>
</users>';
// Start parsing
if(!$xml = simplexml_load_string($xmlstring)){
echo "Error loading string ";
} else {
echo "<pre>";
// Print all firstname values directly from xpath
// This outputs the elements, but the values are blank
print_r($xml->xpath("https://stackoverflow.com/users/user/firstname"));
// Set a variable with all of the user elements and then loop through and print firstname values
// This DOES output the values
$users = $xml->xpath("https://stackoverflow.com/users/user");
foreach($users as $user){
echo $user->firstname;
}
// Find all firstname values by tag
// This does not output the values
print_r($xml->xpath("//firstname"));
echo "</pre>";
}
Бит путать. Результаты возвращаются для всех трех ваших запросов. У вас просто проблемы с получением данных? – rjdown