我有这个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;
}
答案 0 :(得分:3)
如果您将SimpleXML中的(一个或多个)元素节点列表作为单个元素访问,它将返回第一个元素。这是默认情况(也在SimpleXML Basic Usage中概述):
$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中并不昂贵。有时访问元素的唯一方法是 with Xpath even。因此,您可能知道您可以轻松访问第一个元素以及每个xpath。例如,SimpleXML中的父元素:
list($parent) $element->xpath('..'); # PHP < 5.4
$parent = $element->xpath('..')[0]; # PHP >= 5.4
正如您所看到的,实际了解如何更好地利用SimpleXML是值得的。如果您已经从 SimpleXML Basic Usage 页面了解了所有内容,那么您可能希望通过
了解更多信息。答案 1 :(得分:0)
您可以使用XPath查找匹配元素的第一个实例。
/ root / firstname [1]会在文档中为您提供firstname的第一个实例。
$res=$response['linkedin']->xpath('/first-name[1]');
答案 2 :(得分:0)
每个请求的答复表。 ^^
如果SimpleXMLElement
中唯一包含$resource['linkedin']
,则可以使用以下内容进行更改:
$resource['linkedin']->{'first-name'} = $name;
这允许您直接访问元素而无需对其执行xpath
。 ^^