Я хочу получить значение 23452345235 параметра с name="userID"
из этого XML:
<?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» или получить параметр, чтобы получить это значение.
Что я делаю не так?
Ну, вы можете (опционально) поставить его под петлю. Как это:
$myDataObject = $xml->xpath('//parameter[@name="UserID"]');
foreach($myDataObject as $element) {
echo $element;
}
Или напрямую:
echo $myDataObject[0];
На самом деле это довольно просто, как видно на вашем var_dump()
, это массив, так что доступ к нему как таковой.
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"