You can also try to use the XPath API instead of traversing the nodes and comparisons. E.g., you can write something like:
NodeList buscases = XPathAPI.selectNodeList(document, "/PAGE/BUSCASE/");
for (int i=0;i<buscases.getLength();i++) {
Node buscase = buscases.item(i);
NodeList urls = XPathAPI.selectNodeList(buscase,"URL");
etc.
The XPathAPI is part of Xalan 2, and Cocoon 1.8. (Although in different packages...)
Hope this helps,
> -----Original Message-----
> From: Sbodio Marco [mailto:[EMAIL PROTECTED]]
> Sent: Monday, November 05, 2001 8:18 AM
> To: [EMAIL PROTECTED]
> Subject: RE: Parsing a xml file and getting node name/values
>
>
> Hi,
>
> I think that using Xerces the only possible approach is the
> one that you
> described, that is traversing the tree and making comparison
> on each node.
>
> One alternative approach might be using XSLT: you can write
> an XSL that
> extracts from your XML only the information that is valuable
> for you. This
> may be a simple example:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:fo="http://www.w3.org/1999/XSL/Format">
>
> <xsl:template match="NAME">
> NAME - <xsl:value-of select="."/>
> </xsl:template>
>
> <xsl:template match="URL">
> URL - <xsl:value-of select="."/>
> </xsl:template>
>
> <xsl:template match="every">
> every - <xsl:value-of select="."/>
> </xsl:template>
>
> <xsl:template match="increaseby">
> increaseby - <xsl:value-of select="."/>
> </xsl:template>
>
> <xsl:template match="delay">
> delay - <xsl:value-of select="."/>
> </xsl:template>
>
> </xsl:stylesheet>
>
> you may try out this with Xalan (OK this maybe a little out
> of topic on this
> mailing list, sorry):
>
> java org.apache.xalan.xslt.Process -IN prasad.xml -XSL prasad.xsl
>
> where prasad.xsl is the previous stylesheet and prasad.xml is
> your example
> the association to the XSL stylesheet:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <?xml-stylesheet type="text/xsl"
> href="">
> <PAGE>
> <BUSCASE>
> <NAME>Books Set 1</NAME>
> <URLS>
>
> <URL><![CDATA[/servlet/book1?title=abc&author=Fowler]]></URL>
>
> <URL><![CDATA[/servlet/book2?title=xyz&author=Hunter]]></URL>
>
> <URL><![CDATA[/servlet/book3?title=pqrs&author=GOF]]></URL>
> </URLS>
> <OTHERS>
> <every>1</every>
> <increaseby>2</increaseby>
> <delay>10</delay>
> </OTHERS>
> </BUSCASE>
> </PAGE>
>
> I don't know if this approach suits your needs, anyway I hope
> it helps.
>
> Cheers,
> Marco Sbodio
>
> > -----Original Message-----
> > From: Moganna, Prasad [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, November 02, 2001 6:57 PM
> > To: [EMAIL PROTECTED]
> > Subject: Parsing a xml file and getting node name/values
> >
> >
> > Hi All,
> >
> > I have a xml file (short snippet as shown below)
> >
> > <PAGE>
> > <BUSCASE>
> > <NAME>Books Set 1</NAME>
> > <URLS>
> >
> > <URL><![CDATA[/servlet/book1?title=abc&author=Fowler]]></URL>
> >
> > <URL><![CDATA[/servlet/book2?title=xyz&author=Hunter]]></URL>
> >
> > <URL><![CDATA[/servlet/book3?title=pqrs&author=GOF]]></URL>
> > .......
> > .....
> > </URLS>
> > <OTHERS>
> > <every>1</every>
> > <increaseby>2</increaseby>
> > <delay>10</delay>
> > </OTHERS>
> > </BUSCASE>
> > .....
> > ....
> > </PAGE>
> >
> > My requirement is, given the "BUSCAE" node handle, the
> > program should output
> >
> >
> > NAME - Books Set 1
> > URL - /servlet/book1?title=abc&author=Fowler
> > URL - /servlet/book2?title=xyz&author=Hunter
> > URL - /servlet/book2?title=pqrs&author=GOF
> > every - 1
> > increaseby - 2
> > delay - 10
> >
> > I can traverse through the tree and make a comparison on each
> > node's name
> > and type,
> > but that would end up in too many comparisons. Is there any
> > other way of
> > writing such a program, if anybody has written such a program
> > and would like
> > to share,
> > it would be of great help.
> >
> > BTW, there is a DTD for this xml file and the above file
> > snippet satisfies
> > the dtd.
> >
> > Thanks,
> > Prasad M
> >
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
