[jdom-interest] Using Xpath and Element GetDocument

MarkW mark.wilson at wilsoncom.de
Mon May 26 07:32:14 PDT 2003


Hi Charles,
you can also use element.detach() which (strangely enough!) deatchs the
element from the document object instead of having to clone and
type-cast to Element.

Cheers,
Mark

> -----Original Message-----
> From: jdom-interest-admin at jdom.org 
> [mailto:jdom-interest-admin at jdom.org] On Behalf Of jaxtrx
> Sent: Monday, May 26, 2003 4:26 PM
> To: Jdom-Interest
> Subject: RE: [jdom-interest] Using Xpath and Element GetDocument
> 
> 
> Mark,
> 
> Sort of answered my own question with your help, just needed 
> to clone the
> node to seperate it from the original document.  Thanks for 
> the tip on //
> being slower - now I have to go read about xpath :)
> 
> 
>             XPath jobPath = XPath.newInstance("/root/job");
>             List jobList = jobPath.selectNodes(activeDoc);
>             Iterator jobIterator=jobList.iterator();
>             while(jobIterator.hasNext()){
>                 System.out.println("------------------");
>                 Element jobElem=(Element)jobIterator.next();
> 
>                 XMLOutputter outputter = new XMLOutputter();
>                 outputter.setExpandEmptyElements(true);
>                 Document tmpDoc= new 
> Document((Element)jobElem.clone());
>                 try{
>                     outputter.output(tmpDoc, System.out);
>                 }catch(Exception e){
>                     e.printStackTrace();
>                 }
> 
>             }
> 
> -----Original Message-----
> From: jdom-interest-admin at jdom.org
> [mailto:jdom-interest-admin at jdom.org]On Behalf Of MarkW
> Sent: Monday, May 26, 2003 8:03 AM
> To: jaxtrx at xde.net
> Cc: Jdom-Interest
> Subject: RE: [jdom-interest] Using Xpath and Element GetDocument
> 
> 
> Hi,
> why not use:
> 
> List jobList = doc.getRootElement().getChildren();
> 
> Also note using an xpath expression like "//job" is relatively slow
> (especially with deep structured trees). Better is "/root/job"
> 
> Greetings,
> Mark
> 
> > -----Original Message-----
> > From: jdom-interest-admin at jdom.org
> > [mailto:jdom-interest-admin at jdom.org] On Behalf Of jaxtrx
> > Sent: Monday, May 26, 2003 2:46 PM
> > To: jdom-interest at jdom.org
> > Subject: [jdom-interest] Using Xpath and Element GetDocument
> >
> >
> > Hi All,
> >
> > Hoping for some help iterating through a list of jobs as
> > shown in the XML
> > and code below.
> > Basically no matter what combination of Xpath filters I use,
> > the Element
> > getDocument method always seems to return the original
> > document text 2 times
> > as there are 2 job nodes.   I'm ideally looking for output
> > similiar to the
> > expected output section with only the single root job per
> > element iterated.
> >
> > I'm assuming that getDocument is tied to the original parent
> > element (root),
> > but is there a way of just getting the child XML or XML
> > specific to the
> > current Element?
> >
> > Thanks much in advance!
> >
> > Charles Havranek
> >
> >
> >
> >
> >             XPath jobPath = XPath.newInstance("//job");
> > //Have tried //job,
> > //root/*, //job//*, //root//job
> >             List jobList = jobPath.selectNodes(doc);
> >             Iterator jobIterator=jobList.iterator();
> >             while(jobIterator.hasNext()){
> >                 Element jobElem=(Element)jobIterator.next();
> >                 XMLOutputter outputter = new XMLOutputter();
> >                 outputter.setExpandEmptyElements(true);
> >                 try{
> >                     outputter.output(jobElem.getDocument(),
> > System.out);
> >                 }catch(Exception e){
> >                     e.printStackTrace();
> >                 }
> >             }
> > Source XML:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <root><job>
> >
> >     <input>inputReader</input>
> >         <proc>cleanData</proc>
> >         <proc>mailMessage</proc>
> >         <proc>DisplayDataUnit</proc>
> >     <output>outputWriter</output>
> >
> >     </job><job>
> >
> >     <input>inputReaderStep2</input>
> >         <proc>cleanData</proc>
> >         <proc>mailMessage</proc>
> >     <output>outputWriter</output>
> >
> >     </job></root>
> >
> > Problem Output :
> > Same as Source XML 2 times.
> >
> > Expected Output :
> > -------------------------JOB 1
> >
> >     <input>inputReader</input>
> >         <proc>cleanData</proc>
> >         <proc>mailMessage</proc>
> >         <proc>DisplayDataUnit</proc>
> >     <output>outputWriter</output>
> >
> >     </job>
> >
> > -------------------------JOB 2
> >
> >     <input>inputReaderStep2</input>
> >         <proc>cleanData</proc>
> >         <proc>mailMessage</proc>
> >     <output>outputWriter</output>
> >
> >     </job>
> >
> > _______________________________________________
> > To control your jdom-interest membership:
> > http://lists.denveronline.net/mailman/options/jdom-interest/yo
> uraddr at yourhost.com
> 
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/yo
uraddr at yourhos
t.com

_______________________________________________
To control your jdom-interest membership:
http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@you
rhost.com




More information about the jdom-interest mailing list