Hi,
Thanks for your response.
I have attached the code and the XML file below.
Thanks for your help in advance.
Sincerely,
RCSEN.
#!/usr/local/bin/perl
use XML:

OM;
use CGI;
print "Content-type:text/html\n\n";
my $parser = new XML:

OM:

arser;
my $xml_dom = $parser->parsefile('sample.xml');
my $quote_node;
@code = ("^IXIC","ADV","BHP"

;
@arr="";
%hasharr;
@Tag = ("COMPANY_NAME","LAST","","HIGH","LOW","OPEN","CLOSE","NET_CHANGE","VOLUME","BID","ASK","ERROR_MSG"

;
for ($sc=0;$sc<=$#code;$sc++)
{
my @quotes = $xml_dom->getElementsByTagName("QUOTE"

;
foreach $quote (@quotes)
{
if ($quote->getAttribute("SYMBOL"

eq $code[$sc])
{
print "$code[$sc] \n";
$hasharr{CODE} = $code[$sc];
$quote_node = $quote;
}
if ($quote_node)
{
&parse_xml($quote_node,\%hasharr);
}
$arr[$#arr+1] = \%hasharr;
}
$code1 = $code[$sc];
%parse = %{$arr[$sc]};
&print_template($code1,\%parse);
}
sub parse_xml
{
my ($node,$hasharr) = @_;
if ($node->getNodeType==ELEMENT_NODE)
{
foreach my $child ($node->getChildNodes())
{
&parse_xml($child,$hasharr);
}
}
elsif($node->getNodeType==TEXT_NODE)
{
my ($ParentNode)=$node->getParentNode;
$hasharr{$ParentNode->getTagName} = $node->getData;
}
}
sub print_template
{
my ($stock_code,$parsedData) = @_;
print <<_FROM_;
<html><body>
<center><TABLE border=1>
_FROM_
for ($k=0;$k<=$#Tag;$k++)
{
if ($k==0)
{
print "<TR><font id=p3><B>".$stock_code."</B>:".$parsedData{$Tag[$k]}."</TR>";
}
elsif ($k!=$#Tag)
{
print <<_BLOCK_;
<TR>
<TD>
<B>$Tag[$k]</B>
</TD>
<TD align=right width=100>
$parsedData{$Tag[$k++]}
</TD>
<TD align=right width=120><table width="60%"><tr><td align=left>
<B>$Tag[$k]</B></td></tr></table>
</TD>
<TD align=right width=100>
$parsedData{$Tag[$k]}
</TD>
</TR>
_BLOCK_
}
}
print <<_FROM_;
<BR></TABLE></center></body></html>
_FROM_
}
XML FILE:
<?xml version="1.0" standalone="no" ?>
<QUOTE_DATA>
<QUOTE SYMBOL="^IXIC">
<COMPANY_NAME>
<![CDATA[ NAS/NMS COMPSITE]]>
</COMPANY_NAME>
<LAST>
<![CDATA[ 1840.29]]>
</LAST>
<NET_CHANGE>
<![CDATA[ 19.72 ]]>
</NET_CHANGE>
<MOVEMENT>N/A</MOVEMENT>
<HIGH>
<![CDATA[ 1855.58 ]]>
</HIGH>
<LOW>
<![CDATA[ 1794.30 ]]>
</LOW>
<OPEN>
<![CDATA[ 1830.42 ]]>
</OPEN>
<CLOSE>
<![CDATA[ ]]>
</CLOSE>
<VOLUME>N/A</VOLUME>
<BID>
<![CDATA[ N/A ]]>
</BID>
<ASK>
<![CDATA[ N/A ]]>
</ASK>
<WEEK_52_LOW>
<![CDATA[ 1794.21 ]]>
</WEEK_52_LOW>
<CURRENCY />
<PE_RATIO>N/A</PE_RATIO>
<MARKET_CAP />
<YIELD>N/A</YIELD>
<BOND_YIELD />
<YEAR_1_RETURN />
<EARNINGS_PER_SHARE>N/A</EARNINGS_PER_SHARE>
</QUOTE>
<QUOTE SYMBOL="ADV">
<COMPANY_NAME>
<![CDATA[ ADVANTAGE GROUP ]]>
</COMPANY_NAME>
<LAST>
<![CDATA[ 0.85 ]]>
</LAST>
<NET_CHANGE>
<![CDATA[ -0.06 ]]>
</NET_CHANGE>
<MOVEMENT>N/A</MOVEMENT>
<HIGH>
<![CDATA[ 0.90 ]]>
</HIGH>
<LOW>
<![CDATA[ 0.83 ]]>
</LOW>
<OPEN>
<![CDATA[ 0.90 ]]>
</OPEN>
<CLOSE>
<![CDATA[ ]]>
</CLOSE>
<VOLUME>214,877</VOLUME>
<BID>
<![CDATA[ 0.85 ]]>
</BID>
<ASK>
<![CDATA[ 0.89 ]]>
</ASK>
<WEEK_52_LOW>
<![CDATA[ 0.90 ]]>
</WEEK_52_LOW>
<CURRENCY />
<PE_RATIO>18.570</PE_RATIO>
<MARKET_CAP />
<YIELD>7.140</YIELD>
<BOND_YIELD />
<YEAR_1_RETURN />
<EARNINGS_PER_SHARE>0.049</EARNINGS_PER_SHARE>
</QUOTE>
</QUOTE_DATA>