2

好的,这可能是一个愚蠢的问题,但是如何从 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;
}
4

3 回答 3

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 中并没有那么昂贵。有时访问元素的唯一方法就是使用Xpath。因此,了解您也可以通过 xpath 轻松访问第一个元素可能对您很有用。例如 SimpleXML 中的父元素:

list($parent) $element->xpath('..'); # PHP < 5.4

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

如您所见,真正了解事物的工作原理以更多地使用 SimpleXML 是值得的。如果您已经从SimpleXML Basic Usage页面了解了所有内容,您可能希望通过

于 2013-04-19T08:07:32.263 回答
0

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

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

$res=$response['linkedin']->xpath('/first-name[1]');
于 2013-04-19T06:06:06.897 回答
0

每个请求的答复表格。^^

如果这SimpleXMLElement是其中包含的唯一一个$resource['linkedin'],则可以使用以下命令对其进行更改:

$resource['linkedin']->{'first-name'} = $name;

这允许您直接访问元素而无需对其进行操作xpath。^^

于 2013-04-19T06:59:58.643 回答