好吧,这可能是一个愚蠢的问题,但是我如何从XML文档中获得单个元素?
这里是XML
$element = $response['linkedin'];
SimpleXMLElement Object
(
[id] => 575677478478
[first-name] => John
[last-name] => Doe
[email-address] => john@doe.com
[picture-url] => http://m3.licdn.com/mpr/mprx/123
[headline] => Headline goes here
[industry] => Internet
[num-connections] => 71
我只想把first-name
赋值为$firstName
我可以用xPath遍历它,但这似乎有点多余。
,
$fName = $element->xpath('first-name');
foreach ($fName as $name)
{
$firstName = $name;
}
如果您在SimpleXML中访问(一个或多个)元素节点的列表作为单个元素,它将返回第一个元素。这是默认的(在SimpleXML基本用法中也有概述):
$first = $element->{'first-name'};
如果有多个元素,可以在方括号(数组访问)或大括号(属性访问)中使用它的从零开始的索引来指定指的是哪个元素:
$first = $element->{'first-name'}[0];
$first = $element->{'first-name'}{0};
这也允许你创建一个所谓的SimpleXML自引用来访问元素本身,例如删除它:
unset($first[0]); # removes the element node from the document.
unset($first); # unsets the variable $first
您可能认为Xpath太过了。但这在SimpleXML中并不那么昂贵。有时访问元素的唯一方法是使用 Xpath甚至。因此,知道也可以通过xpath轻松访问第一个元素可能对您很有用。例如SimpleXML中的父元素:
list($parent) $element->xpath('..'); # PHP < 5.4
$parent = $element->xpath('..')[0]; # PHP >= 5.4
正如您所看到的,为了更好地利用SimpleXML,真正理解事物是如何工作的是值得的。如果您已经从SimpleXML基本用法页面了解了所有内容,那么您可能希望通过
了解更多内容。- SimpleXML类型备忘单
- 如何区分SimpleXML对象表示元素和属性?
- SimpleXMLElement实现JsonSerializable
回复每个请求的表单。^ ^
如果SimpleXMLElement
是$resource['linkedin']
中唯一包含的一个,您可以使用:
$resource['linkedin']->{'first-name'} = $name;
允许您直接访问该元素,而无需对其执行xpath
。^ ^
可以使用XPath查找匹配元素的第一个实例。
/root/firstname[1]将为您提供文档中firstname的第一个实例。
$res=$response['linkedin']->xpath('/first-name[1]');