我已经成功地将LinkedIn API与我的网站集成,但是我正在努力从XML中提取信息。现在我只是想把它打印出来,这样我就可以在用户登录并获得许可后继续使用他们的信息。
下面是XML的格式,下面是我用来提取信息的代码。"名"、"姓"answers"标题"调用可以正常工作,但是如果元素有副标题,则不会打印出任何内容。我试过使用
echo 'Positions: ' . $xml->{'positions:(title)'};
但是它不工作。
下面是XML:
<person>
<id>
<first-name />
<last-name />
<headline>
<location>
<name>
<country>
<code>
</country>
</location>
<industry>
<summary/>
<positions total="">
<position>
<id>
<title>
<summary>
<start-date>
<year>
<month>
</start-date>
<is-current>
<company>
<name>
</company>
</position>
</person>
这是我一直在使用的代码,试图提取信息。我知道我必须包括副标题,但我只是不知道如何!
echo 'First Name: ' . $xml->{'first-name'};
echo '<br/>';
echo 'Last Name: ' . $xml->{'last-name'};
echo '<br/>';
echo 'Headline: ' . $xml->{'headline'};
echo '<br/>';
echo 'Positions: ' . $xml->{'positions'};
任何帮助将非常感激,感谢阅读!
使用SimpleXML,您将按照如下方式访问LinkedIn XML数据属性:
任何带有破折号的属性都得到{}
,因此first-name
变成:
$xml->{'first-name'}
任何没有破折号的东西,如headline
,引用如下:
$xml->headline
任何作为集合的东西,例如positions
,引用方式如下:
foreach($xml-positions as $position) {
echo $position->title;
echo $position->{'is-current'};
}
您的XML无效,格式不正确。无论如何,这里有一个示例XML以及如何使用它。
$v = <<<ABC
<vitrine>
<canal>Hotwords</canal>
<product id="0">
<descricao>MP3 Apple iPod Class...</descricao>
<loja>ApetreXo.com</loja>
<preco>à vista R$765,22</preco>
<urlImagem>http://im</urlImagem>
<urlProduto>http://</urlProduto>
</product>
</vitrine>
ABC;
$xml = simplexml_load_string($v);
foreach ($xml->product as $c){
echo $c->loja; //echoing out value of 'loja'
}
尝试使用PHP的XML解析器:
http://www.php.net/manual/en/function.xml-parse.php尝试Paul上面的答案:
foreach($xml-positions as $position) {
echo $position->title;
echo $position->{'is-current'};
}
不适合我-所以我使用了这个-不那么优雅但有效
for($position_num = 0; $position_num < 10;$position_num++){
echo $xml->positions->position[$position_num]->company->name;
}
您的XML格式不正确…有几个元素没有关闭标记。因此,我们无法确切地知道XML的结构。(在XML中不能像在HTML中那样做。)
话虽这么说,假设<person>
是上下文节点,您可以使用XPath表达式获得<title>
元素的内容,如
$xml->xpath('positions/position/title');
我假设$xml是一个SimpleXMLElement对象。