使用SimpleXML获取第一个XML元素


Getting the first XML element with SimpleXML

好吧,这可能是一个愚蠢的问题,但是我如何从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]');