【发布时间】:2011-10-11 20:03:36
【问题描述】:
我正在尝试解析 XML 文件中的抽象部分。我正在使用forcearray。我编写了代码,但是当抽象在数组中时它只是工作,而当数组不存在时它不工作。这是因为在数组中我也使用 {content} 而当不在数组中时 {content} 丢失。代码如下
use LWP::Simple;
use XML::Simple;
use Data::Dumper;
open (FH, ">:utf8","xmlparsed2.txt");
my $db1 = "pubmed";
my $query = "9915366";
my $q = 16404398;
my $xml = new XML::Simple;
$urlxml = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=$db1&id=$q&retmode=xml&rettype=abstract";
$dataxml = get($urlxml);
$data = $xml->XMLin("$dataxml", ForceArray => [qw( MeshHeading Author AbstractText )], ForceContent => 1);
print FH Dumper($data);
print FH "Abstract: ".join "\n", map {join ":",($_->{NlmCategory},$_->{content})} @{$data->{PubmedArticle}->{MedlineCitation}->{Article}->{Abstract}->{AbstractText}};
print FH "\n";
print FH "Title: "."$data->{PubmedArticle}->{MedlineCitation}->{Article}->{ArticleTitle}\n";
print FH "\n";
print FH "MeSH: ".join '$$', map $_->{DescriptorName}{content}, @{$data->{PubmedArticle}->{MedlineCitation}->{MeshHeadingList}->{MeshHeading}};
print FH "\n";
print FH "Authors: ".join '$$', map {join " ",($_->{LastName},$_->{ForeName})} @{$data->{PubmedArticle}{MedlineCitation}{Article}{AuthorList}{Author}};
好吧,当在数组中时(replcae $q in $urlxml by $query)我想要具有 NlmCategory 的抽象,如 目标:确定是否长......。对于上面的代码,它给了我想要的输出,但最后带有散列,如下所示:
METHODS:Tertiary care outpatient and inpatient rehabilitation center directly attached to a university hospital.:HASH(0x69d0810).
对于不是数组的抽象($urlxml 中的 $q),此代码似乎不起作用,可能是因为没有内容术语(我在数据转储器中找到了这个)。我玩了一点,如果我只为数组执行 $_ 之类的操作,但也打印两个 ::.简而言之,我希望我的代码同时适用于 $query 和 $q。你能帮忙吗?
【问题讨论】: