[jdom-interest] Problem with parsing two documents

Jason Hunter jhunter at collab.net
Thu Jan 18 19:08:35 PST 2001


Hmm...  For me to run this you need to include the ListRow class and the
XML file being manipulated.

-jh-

Wang K H wrote:
> 
> Hi,
> 
> Here's my code and I'm using Jdom Beta 5. Thanks in advance for any help.
> 
> import java.util.*;
> import java.io.*;
> import org.jdom.*;
> import org.jdom.input.*;
> 
> public class XMLList
> {
>   final static private String PARSER =
> "org.apache.xerces.parsers.SAXParser";
> 
>   private Vector  list;
>   private Element lookupRoot;
> 
>   public XMLList()
>   {
>   }
> 
>   public List createList(String fullFilePath, String lookupFilePath)
>   {
>     File fileObj = new File(fullFilePath);
>     File lookupFileObj = new File(lookupFilePath);
>     return createList(lookupFileObj, lookupFileObj);
>   }
> 
>   public List createList(File fileObj, File lookupFileObj)
>   {
>     log("createList");
>     List displayList = null;
>     try
>     {
>       SAXBuilder docBuilder = new SAXBuilder(PARSER, false);
>       Document fileDoc = docBuilder.build(fileObj);
>       Element fileRoot = fileDoc.getRootElement();
> 
>       SAXBuilder docBuilder2 = new SAXBuilder(PARSER, false);
>       Document lookupDoc = docBuilder2.build(lookupFileObj);
>       lookupRoot = lookupDoc.getRootElement();
> 
>       displayList = readFiles(fileRoot);
>     }
>     catch(Exception e)
>     {
>       log("Exception in reading files");
>       e.printStackTrace(System.out);
>     }
>     return displayList;
>   }
> 
>   private List readFiles(Element userFile)
>   {
>     log("readFiles");
>     this.list = new Vector();
>     int level = 0;
>     List userfileChildren = userFile.getChildren();
>     createListRows(userfileChildren, level);
>     return this.list;
>   }
> 
>   private void createListRows(List children, int currentLevel)
>   {
>     log("createListRows:Current level = " + currentLevel);
>     Iterator cIterator = children.iterator();
>     while(cIterator.hasNext())
>     {
>       Element child = (Element)cIterator.next();
>       String tag = child.getName();
>       log("Child Tag = " + tag);
>       Element foundLookup = lookupRoot.getChild(tag);
>       ListRow newListRow = createListRow(child, foundLookup, currentLevel);
>       printListRow(newListRow);
>       this.list.add(newListRow);
>       if(child.hasMixedContent())
>       {
>         List grandChildren = child.getChildren();
>         createListRows(grandChildren, ++currentLevel);
>       }
>     }
>   }
> 
>   private ListRow createListRow(Element inputChild, Element foundLookup, int
> currentLevel)
>   {
>     log("createListRow");
>     ListRow listRow = new ListRow();
>     listRow.setValue(inputChild.getTextTrim());
>     if(foundLookup != null)
>     {
>       listRow.setLabel(foundLookup.getChildTextTrim("Label"));
>       listRow.setAttr(foundLookup.getChildTextTrim("Attr"));
>       listRow.setLookupFilename(foundLookup.getChildTextTrim("LookupFile"));
>     }
>     return listRow;
>   }
> 
>   private void printListRow(ListRow listRow)
>   {
>     log("$$$$$Printing listRow");
>     log("$$$$$Attr\t\t\t= " + listRow.getAttr());
>     log("$$$$$Label\t\t= " + listRow.getLabel());
>     log("$$$$$LookupFilename\t= " + listRow.getLookupFilename());
>     log("$$$$$Value\t\t= " + listRow.getValue());
>     log("$$$$$Printing listRow End");
>   }
> 
>   private void log(String msg)
>   {
>     System.out.println("[XMLList] " + msg);
>   }
> }
> ----- Original Message -----
> From: "Jason Hunter" <jhunter at collab.net>
> To: "Wang K H" <khong.hai.wang at gridnode.com>
> Cc: <jdom-interest at jdom.org>
> Sent: Friday, January 19, 2001 2:24 AM
> Subject: Re: [jdom-interest] Problem with parsing two documents
> 
> > You don't say what version of JDOM you're using.  Make sure you try the
> > latest.
> >
> > If you still see the behavior, I suggest you simplify your code down to
> > a small test case and submit the code demonstrating the oddity here.
> >
> > -jh-
> >
> > > Wang K H wrote:
> > >
> > > Hi,
> > >
> > > I am facing a problem with JDom. I am using the SAXBuilder to build 2
> > > documents one after the other. Later in the program, when I am
> > > manipulating the document using the getChildren() method from Element
> > > class, I am getting a list of elements from the other document. Is
> > > this possible? I had verified my code that I did not get the list
> > > using a wrong element. What could be a possible cause?
> > >
> > > Thanks in advance for any reply.
> > >
> > > Thanks,
> > > WKH
> > _______________________________________________
> > To control your jdom-interest membership:
> >
> http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhos
> t.com
> >



More information about the jdom-interest mailing list