Hallo! wie bekomme ich die Attribute geparst?
<?xml version="1.0"?>
<!DOCTYPE eSummaryResult PUBLIC "-//NLM//DTD eSummaryResult, 11 May 2002//EN" "
http://www.ncbi.nlm.nih.gov/...mary_041029.dtd"> <eSummaryResult>
<DocSum>
<Id>11848</Id>
<Item Name="Name" Type="String">Rhoa</Item>
<Item Name="Description" Type="String">ras homolog gene family, member A</Item>
<Item Name="Orgname" Type="String">Mus musculus</Item>
<Item Name="OtherDesignations" Type="String">Rho family GTPase|aplysia ras-related homolog A|aplysia ras-related homolog A1|aplysia ras-related homolog A2|ras homolog A1|ras homolog A2|ras homolog gene family, member A1|ras homolog gene family, member A2</Item>
</DocSum>
folgendes skript funktioniert nicht!was mache ich falsch???
#!/xprog/bin/perl -w
use LWP::Simple;
use XML::DOM;
sub XML_einlesen
{
my $url='
http://eutils.ncbi.nlm.nih.gov/.../esummary.fcgi?db='; my ($datenbank,$id1)=@_;
my $url2='&id=';
my $url4='&retmode=xml';
return $url.$datenbank.$url2.$id1.$url4;
}
sub main
{
my $doc;
my $datenverarbeiten;
$datenverarbeiten=&XML_einlesen("gene",11848);
$doc = get$datenverarbeiten;
processXML($doc);
}
sub processXML
{
my $xmldoc = $_[0];
my $parser = new XML::DOM::Parser;
my $doc = $parser->parse($xmldoc);
my $nodes = $doc->getElementsByTagName("eSummaryResult");
for (my $i=0; $i<$nodes->getLength(); $i++)
{
my $node = $nodes->item($i);
if ($node->getAttribute("Name"))
{
print processNode($node->item($i));
}
print "\n";
}
$doc->dispose;
}
sub processNode
{
my $nodes = $_[0]->getChildNodes();
my $text;
for (my $i=0; $i<$nodes->getLength();$i++ )
{
my $node = $nodes->item($i);
if ($node->getNodeType() ==XML::DOM::Node::ELEMENT_NODE())
{
$text .= $node->getFirstChild()->getNodeValue()
}
else
{
$text .= $node->getNodeValue()
}
}
return $text;
}
main();