私は昨日、私はXMLを取得するために使用していますHow do I retrieve tag attributes with XML::Simple?リンク質問を:私は非常に良い進歩を遂げたとをループ以下のコードを書いた1つまたは複数のサブ要素を持つXMLタグでXML :: Simpleを使用するにはどうすればよいですか?
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=19273512(1)
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=19291509(2)
をタグと必要なものを検索します。私は「ArticleIds」
foreach $item_node (@{$dataSummary->{DocSum}->{Item}})
{
if($item_node->{Name} eq 'ArticleIds')
{
foreach $item_node1 (@{$item_node->{Item}})
{
if ($item_node1->{Name} eq 'doi')
{
$doi= $item_node1->{content};
last;
}
}
last;
}
}
の下にこのコードは、基本的にArticleIdsタグを検索し、次に「はDOI」タグを見つけるために、その下にサブタグを検索「DOI」タグを探しています。
問題ArticleIdsに(2)のように複数のサブタグがある場合、すべて正常に機能します。しかし、ArticleIdsタグの下に(1)に示すように1つのサブタグしかない場合、エラーが発生し、プログラムが停止します。
私はSimple Parserを使用しており、ダンパーを使用して2つの結果が得られました。 は、ここで(2)
{ 'Type' => 'List', 'Item' => [ { 'Type' => 'String', 'content' => '909564644', 'Name' => 'pii' }, { 'Type' => 'String', 'content' => '10.1080/13506120802676914', 'Name' => 'doi' }, { 'Type' => 'String', 'content' => '19291509', 'Name' => 'pubmed' } ], 'Name' => 'ArticleIds' }
あなたが見ることができるようにリンクのリンク(1)のダンプ の一部
{ 'Type' => 'List', 'Item' => { 'Type' => 'String', 'content' => '19273512', 'Name' => 'pubmed' }, 'Name' => 'ArticleIds' }
です。 ArticleIdsの下に複数のタグがある場合、それは配列として扱われます。したがって、大括弧で囲まれています。
誰かがこのような場合に何を提案しますか?
私は以下のことをしましたが、アイテムが1つしかありません。それはハッシュで来ています。 $ contents = get($ getstring) $ data = $ xml-> XMLin($ contents、ForceArray => qr {Item} x); –
私は配列に入れたいItemタグがArticleIdsタグの下にあるので何か違いがありますか? –
これはイライラしています... :(XMLを知るための素早い方法はありますか::使用しているシンプルなバージョンですか? –