Title: RE: Parsing a xml file and getting node name/values

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]
>

Reply via email to