나는 내가 XML을 얻기 위해 사용하고 어제 How do I retrieve tag attributes with XML::Simple? 링크 질문을 :하나 이상의 하위 요소가있을 수있는 XML 태그로 XML :: Simple을 어떻게 사용할 수 있습니까?
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=19273512 (1)
(2)
내가 아주 좋은 진전을 만들어 통해 루프 다음과 같은 코드를 작성 http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=19291509 필요한 태그를 검색하고 검색합니다. 나는 아래의 '도이'태그를 찾고 있어요 '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 태그를 검색 한 후 '도이'태그를 찾아 그 아래에 하위 태그를 검색합니다.
문제 ArticleIds에 (2)에서 볼 수있는 것처럼 여러 개의 하위 태그가있는 경우 모든 항목이 올바르게 작동합니다. 그러나 ArticleIds 태그에는 (1)에서와 같이 하나의 하위 태그 만있을 때 오류가 발생하고 프로그램이 중지됩니다.
나는 간단한 파서를 사용하고 있으며 덤퍼를 사용하여 두 가지 결과를 얻었습니다. 은 여기에 (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 아래에 여러 개의 태그가있을 경우 배열로 처리되므로 대괄호로 처리됩니다.
누군가이 경우에 무엇을 제안합니까?
나는 하나의 항목 만 있으면 다음과 같이했습니다. 그것은 해시로 올 것입니다. $ contents = get ($ getstring) $ data = $ xml-> XMLin ($ contents, ForceArray => qr {Item} x); –
내가 ItemIds 태그에 배열에 넣고 싶은 Item 태그가 있기 때문에 뭔가 다른 점이 있습니까? –
이것은 실망 스럽습니다 ... :(XML :: Simple 버전을 찾으려면 빠른 방법이 있습니까? –