function tripal_pub_PMID_parse_article
2.x tripal_pub.PMID.inc | tripal_pub_PMID_parse_article($xml, &$pub) |
3.x tripal_chado.pub_importer_PMID.inc | tripal_pub_PMID_parse_article($xml, &$pub) |
1.x PMID.inc | tripal_pub_PMID_parse_article($xml, &$pub) |
1 call to tripal_pub_PMID_parse_article()
- tripal_pub_PMID_parse_pubxml in tripal_pub/
includes/ importers/ PMID.inc
File
- tripal_pub/
includes/ importers/ PMID.inc, line 441 - Tripal Pub PubMed Interface
Code
function tripal_pub_PMID_parse_article($xml, &$pub) {
while ($xml->read()) {
// get this element name
$element = $xml->name;
// if we're at the </Article> element then we're done with the article...
if ($xml->nodeType == XMLReader::END_ELEMENT and $element == 'Article') {
return;
}
if ($xml->nodeType == XMLReader::ELEMENT) {
switch ($element) {
case 'Journal':
tripal_pub_PMID_parse_journal($xml, $pub);
break;
case 'ArticleTitle':
$xml->read();
// remoave any trailing period from the title
$pub['Title'] = trim(preg_replace('/\.$/', '', $xml->value));
break;
case 'Abstract':
tripal_pub_PMID_parse_abstract($xml, $pub);
break;
case 'Pagination':
tripal_pub_PMID_parse_pagination($xml, $pub);
break;
case 'ELocationID':
$type = $xml->getAttribute('EIdType');
$valid = $xml->getAttribute('ValidYN');
$xml->read();
$elocation = $xml->value;
if ($type == 'doi' and $valid == 'Y') {
$pub['DOI'] = $elocation;
}
if ($type == 'pii' and $valid == 'Y') {
$pub['PII'] = $elocation;
}
$pub['Elocation'] = $elocation;
break;
case 'Affiliation':
// the affiliation tag at this level is meant solely for the first author
$xml->read();
$pub['Author List'][0]['Affiliation'] = $xml->value;
break;
case 'AuthorList':
$complete = $xml->getAttribute('CompleteYN');
tripal_pub_PMID_parse_authorlist($xml, $pub);
break;
case 'InvestigatorList':
// TODO: perhaps handle this one day. The investigator list is to list the names of people who
// are members of a collective or corporate group that is an author in the paper.
break;
case 'Language':
$xml->read();
$lang_abbr = $xml->value;
// there may be multiple languages so we store these in an array
$pub['Language'][] = tripal_pub_remote_search_get_language($lang_abbr);
$pub['Language Abbr'][] = $lang_abbr;
break;
case 'DataBankList':
// TODO: handle this case
break;
case 'GrantList':
// TODO: handle this case
break;
case 'PublicationTypeList':
tripal_pub_PMID_parse_publication_type($xml, $pub);
break;
case 'VernacularTitle':
$xml->read();
$pub['Vernacular Title'][] = $xml->value;
break;
case 'ArticleDate':
// TODO: figure out what to do with this element. We already have the
// published date in the <PubDate> field, but this date should be in numeric
// form and may have more information.
break;
default:
break;
}
}
}
}