I find the best way to manipulate XML is with XSLT.
I took a stab at what I thought you were asking for in output, and added some extra records to print out.
!/usr/local/bin/perl -w
use strict;
use warnings;
use XML::LibXML;
use XML::LibXSLT;
my $xml = q{<eSummaryResult>
<DocSum>
<Id>25</Id>
<Item Name="Description" Type="String">Ableson Murine</Item>
</DocSum>
<DocSum>
<Id>26</Id>
<Item Name="Description" Type="String">yada yada</Item>
</DocSum>
<DocSum>
<Id>27</Id>
<Item Name="Description" Type="String">yada yada something else</It
+em>
</DocSum>
</eSummaryResult>
};
my $xslt_stylesheet = q{<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:template match="/eSummaryResult/DocSum"><xsl:apply-templates se
+lect="Id|Item"/></xsl:template>
<xsl:template match="Id"><xsl:value-of select="."/>, </xsl:template>
<xsl:template match="Item[@Name='Description']"><xsl:value-of select
+="."/></xsl:template>
</xsl:stylesheet>
};
my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();
my $style_doc = $parser->parse_string( $xslt_stylesheet );
my $source = $parser->parse_string( $xml );
my $stylesheet = $xslt->parse_stylesheet( $style_doc );
my $results = $stylesheet->transform( $source );
my $output = $stylesheet->output_string( $results );
print $output;
Output:
:!./t2.pl
25, Ableson Murine
26, yada yada
27, yada yada something else
Hope that helps.
Best Regards,
WOnko