2013-08-23 38 views
0

我在编写脚本以输出从PubMed Central API抓取的排序信息。我的问题是,我想拉第一个和第二个作者以及第一个第二个关键字(为了这个问题的目的,我们只能关注一个)。一个很好的例子是$xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'}->contrib->name->surname。显然,我可以获得打印的第一个名字。在多维数组中响应特定元素ID的值

这是我从阅读其他帖子的理解,我需要一个foreach循环来实现我的愿望。然而,我并不了解如何在这种情况下实现这一点。我的代码如下:

<?php 
$PMCID = 3545513; 
$url = 'http://www.pubmedcentral.nih.gov/oai/oai.cgi?verb=GetRecord&identifier=oai:pubmedcentral.nih.gov:'.$PMCID.'&metadataPrefix=pmc_fm'; 
$xml = new SimpleXMLElement(file_get_contents($url)); 
?> 
<table> 
<tr> 
<td>Journal Title</td><td>Year</td><td>Issue</td><td>NOC_Country</td><td>State</td><td>City</td><td>Primary Institution</td><td>Secondary Institution</td><td>First Author</td><td>Second Author</td><td>Topic</td><td>Target Behavior 1</td><td>Target Behavior 2</td><td>Population</td><td>Paper</td><td>Status</td> 
</tr> 
<tr> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'journal-meta'}->{'journal-title-group'}->{'journal-title'};?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'pub-date'}->year;?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->issue;?></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'}->contrib->name->surname;?>, <?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'}->contrib->name->{'given-names'};?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'}->contrib->name->surname;?>, <?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'}->contrib->name->{'given-names'};?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'title-group'}->{'article-title'};?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'kwd-group'}->kwd;?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'kwd-group'}->kwd;?></td> 
<td></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'article-categories'}->{'subj-group'}->subject;?></td> 
<td></td> 
</tr> 
</table> 

任何帮助将不胜感激!

+0

'GetRecord-> record-> metadata->物品─>前 - > { '文章的元'} - > {'的contrib -group'} - > contrib-> name-> surname;?>'< - 这很难打破德米特的法则* – Yang

+0

你认为哪个更优雅? – Jackson

回答

0

以结束:

<table> 
<tr> 
<td><strong>Journal Title</strong></td><td><strong>Year</strong></td><td><strong>Issue</strong></td><td><strong>First Author</strong></td><td><strong>Second Author</strong></td><td><strong>Topic</strong></td><td><strong>Target Behavior 1</strong></td><td><strong>Target Behavior 2</strong></td><td><strong>Paper</strong></td> 
</tr> 
<?php 
$PMCID = $_REQUEST['PMCID']; 
$url = 'http://www.pubmedcentral.nih.gov/oai/oai.cgi?verb=GetRecord&identifier=oai:pubmedcentral.nih.gov:'.$PMCID.'&metadataPrefix=pmc_fm'; 
$xml = new SimpleXMLElement(file_get_contents($url)); 
?> 
<tr> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'journal-meta'}->{'journal-title-group'}->{'journal-title'};?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'pub-date'}->year;?></td> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->issue;?></td> 
<?php 
$n=0; 
foreach($xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'contrib-group'} as $author){ 
    echo "<td>" . $author->contrib->name->surname . ", "; 
    echo $author->contrib->name->{'given-names'} . "</td>"; 
$n++; 
if($n==2) break; 
} 
unset($n); 
unset($author); 
?> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'title-group'}->{'article-title'};?></td> 
<?php 
$i=0; 
foreach($xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'kwd-group'}->kwd as $keyword){ 
    echo "<td>" . $keyword . "</td>"; 
$i++; 
if($i==2) break; 
} 
unset($i); 
unset($keyword); 
?> 
<td><?php echo $xml->GetRecord->record->metadata->article->front->{'article-meta'}->{'article-categories'}->{'subj-group'}->subject;?></td> 
</tr> 
</table>