$root = simplexml_load_file('file.xml');
$job_ids = $root->xpath('//profesionalData/jobId');
if (!$job_ids) {
die("Job IDs not found");
}
foreach ($job_ids as $id) {
// SimpleXmlElement implements __toString method, so
// you can fetch the vlaue by casting the object to string.
$id = (string)$id;
var_dump($id);
}
Пример вывода
string(5) "16957"
Примечания
Вам не нужно указывать Root
в выражении XPath, если вы собираетесь получать все profesionalData/jobId
теги независимо от того, где они находятся в документе, просто используйте выражение с двойной косой чертой (//
). Такой подход может быть удобным в тех случаях, когда вы хотите избежать регистрации пространств имен XML. В противном случае вы можете использовать строчное выражение, например /Root/profesionalData/jobId
(путь от корня). Кстати, ваше текущее выражение (//Root/profesionalData/jobId
) соответствует всем вхождениям /Root/profesionalData/jobId
в документе, например. /x/y/z/Root/profesionalData/jobId
.
С SimpleXmlElement::xpath
функция возвращает массив при успешном завершении, или FALSE
при ошибке, вы должны перебирать значение с помощью цикла, если это непустой массив.
SimpleXmlElement
инвентарь __toString
способ. Метод вызывается, когда объект появляется в контексте строки. В частности, вы можете указать объект в строку, чтобы получить строковое содержимое узла.
Попробуйте '$ myObject-> xpath ('// Root/profesionalData') [0] -> jobId' –