Получить значение из xml, используя атрибут с xpath в переполнении стека

Я хочу получить значение 23452345235 параметра с name="userID" из этого :

<?xml version="1.0" encoding="UTF-8"?>
<callout>
<parameter name="UserID">
23452345235
</parameter>

<parameter name="AccountID">
57674567567
</parameter>

<parameter name="NewUserID">
54745674566
</parameter>

</callout>

Я использую этот код:

$xml = simplexml_load_string($data);
$myDataObject = $xml->xpath('//parameter[@name="UserID"]');
var_dump($myDataObject);

И я получаю это:

array(1) {
[0] =>
class SimpleXMLElement#174 (1) {
public $@attributes =>
array(1) {
'name' =>
string(6) "UserID"}
}
}

Я на самом деле хочу получить значение «23452345235» или получить параметр, чтобы получить это значение.

Что я делаю не так?

2

Решение

Ну, вы можете (опционально) поставить его под петлю. Как это:

$myDataObject = $xml->xpath('//parameter[@name="UserID"]');
foreach($myDataObject as $element) {
echo $element;
}

Или напрямую:

echo $myDataObject[0];

На самом деле это довольно просто, как видно на вашем var_dump(), это массив, так что доступ к нему как таковой.

3

Другие решения

SimpleXMLElement :: xpath () может возвращать только массив объектов SimpleXMLElement, поэтому он генерирует элемент и присоединяет к нему выбранный атрибут.

DOMXpath ::valu () может возвращать скалярные значения из выражений Xpath:

$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);

var_dump($xpath->evaluate('normalize-space(//parameter[@name="UserID"])'));

Выход:

string(11) "23452345235"
1

По вопросам рекламы [email protected]