Php 使用SimpleXML获取第一个XML元素

Php 使用SimpleXML获取第一个XML元素,php,xml,xpath,simplexml,Php,Xml,Xpath,Simplexml,好的,这可能是一个愚蠢的问题,但是如何从XML文档中获取一个元素呢 我有这个XML $element = $response['linkedin']; SimpleXMLElement Object ( [id] => 575677478478 [first-name] => John [last-name] => Doe [email-address] => john@doe.com [picture-url] => h

好的,这可能是一个愚蠢的问题,但是如何从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
我只想将
名字
分配为
$firstName

我可以使用xPath对其进行循环,但这似乎有些过头了

例:


可以使用XPath查找匹配元素的第一个实例

/root/firstname[1]将为您提供文档中firstname的第一个实例

$res=$response['linkedin']->xpath('/first-name[1]');

每个请求的答复表。^^

如果该
simplexmlement
$resource['linkedin']
中包含的唯一一个元素,则可以使用以下方法更改它:

$resource['linkedin']->{'first-name'} = $name;
这允许您直接访问元素,而无需对其执行
xpath
^^

如果作为单个元素访问SimpleXML中的(一个或多个)元素节点列表,它将返回第一个元素。这是默认情况下的情况(并在中列出):

如果有多个元素,则可以使用该元素的零基索引(在方括号(数组访问)或方括号(属性访问)中指定所指的元素:

$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
list($parent)$element->xpath('..');#PHP<5.4
$parent=$element->xpath('..')[0];#PHP>=5.4
正如您所看到的,了解如何更好地使用SimpleXML是值得的。如果您已经从SimpleXML基本用法页面了解了所有内容,那么您可能希望通过


如果在
$response['linkedin']
中,只有
$response[linkedin']->{'first-name'}=$name
使用的是
XMLElement
;应该可以帮你。谢谢@Jon,这就是我要找的!如果您将此添加为答案,我将接受。请同时使用现有文档,其中显示了这一点以及更多内容:仍然返回数组的数组应该是包含一个元素的数组--只需使用第一个元素即可。“如果您作为单个元素访问SimpleXML中的(一个或多个)元素节点列表,它将返回第一个元素”-我被这个弄糊涂了。如果我有一个包含2个父项的xml字符串,并且每个父项都有5个子项,为什么
$xml->parent->count()
返回2,而
$xml->parent[0]->count()
返回5?$xml->parent和$xml->parent[0]似乎都指向同一个第一个父元素。是的,回答您的问题会让人困惑:这就是b/c
$xml->parent->count()
计算
$xml
元素的名为parent的子元素,而
$xml->parent[0]->count()
统计
$xml
元素中名为parent的第一个子元素的所有子元素。//
$xml->parent
$xml->parent[0]
从不指向同一对象b/c第一个是名为parent的子元素列表,第二个是名为parent的第一个子元素。
unset($first[0]);  # removes the element node from the document.

unset($first);     # unsets the variable $first
list($parent) $element->xpath('..'); # PHP < 5.4

$parent = $element->xpath('..')[0];  # PHP >= 5.4