私は単純な質問について研究しましたが、できませんでした。私はXMLでWebからデータを取得しようとしており、それをperlを使って解析しています。今、繰り返し要素をループする方法を知っています。しかし、私はそれが繰り返されていないとき(私はこれが愚かかもしれないことを知っています)止まっています。要素が繰り返している場合は、配列に入れてデータを取得します。しかし、要素が1つしかない場合、「配列参照ではない」というエラーがスローされ、エラーが発生します。私は両方の時間(単一の要素と複数の要素)で解析できるように自分のコードが欲しいです。私が使用していたコードは次のとおりです。また、私は、セパレータは$$最後の要素の後に印刷を取得しないような何かを行うことができますperlを使用したXML解析
use LWP::Simple;
use XML::Simple;
use Data::Dumper;
open (FH, ">:utf8","xmlparsed1.txt");
my $db1 = "pubmed";
my $query = "13054692";
my $q = 16354118; #for multiple MeSH terms
my $xml = new XML::Simple;
$urlxml = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=$db1&id=$query&retmode=xml&rettype=abstract";
$dataxml = get($urlxml);
$data = $xml->XMLin("$dataxml");
#print FH Dumper($data);
foreach $e(@{$data->{PubmedArticle}->{MedlineCitation}->{MeshHeadingList}->{MeshHeading}})
{
print FH $e->{DescriptorName}{content}, ' $$ ';
}
? は、私はまた、次のコードを試してみました:
$mesh = $data->{PubmedArticle}->{MedlineCitation}->{MeshHeadingList}->{MeshHeading};
while (my ($key, $value) = each(%$mesh)){
print FH "$value";
}
をしかし、これはすべてのchildNodesを印刷し、私はちょうどコンテンツノードをしたいです。