我已成功将LinkedIn API与我的网站集成,但我很难从XML中提取信息。目前我只是想把它打印出来,这样我就可以在登录并获得许可后继续使用用户的信息。
下面是XML的格式,下面是我用来提取信息的代码。 “名字”,“姓氏”和“标题”调用完美无缺,但如果元素有子标题,则不打印任何内容。我尝试过使用
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'};
非常感谢任何帮助,感谢阅读!
答案 0 :(得分:3)
使用SimpleXML,您可以按如下方式访问LinkedIn XML数据属性:
属性中包含短划线的任何内容都会获得{}
,因此first-name
会变为:
$xml->{'first-name'}
任何没有短划线的内容,例如headline
,都会被引用为:
$xml->headline
任何集合,例如positions
,都被引用为:
foreach($xml-positions as $position) {
echo $position->title;
echo $position->{'is-current'};
}
答案 1 :(得分:1)
您的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'
}
答案 2 :(得分:0)
尝试使用PHP的XML Parser:
答案 3 :(得分:0)
上述保罗的回答:
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;
}
答案 4 :(得分:-1)
您的XML格式不正确......有几个元素没有关闭标记。所以我们无法确切知道XML的结构。 (你不能像在HTML中一样在XML中这样做。)
话虽如此,假设<person>
是上下文节点,您可以使用XPath表达式获取<title>
元素的内容,如
$xml->xpath('positions/position/title');
我假设$ xml是一个SimpleXMLElement对象。