我想从这个xml:中获得带有name="userID"
的参数的值'23452345235'
<?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::evaluate()可以从Xpath表达式返回标量值:
$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);
var_dump($xpath->evaluate('normalize-space(//parameter[@name="UserID"])'));
输出:
string(11) "23452345235"