You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Luke Shannon <ls...@hypermedia.com> on 2004/11/09 19:09:23 UTC
More Digester Help
Hi All;
Sorry about the double post earlier. Mail client is a little wacky.
I am trying to parse my XML document and am getting the error below.
Underneath the error you will find my XML doc and my Digester class and Bean
Class.
Basically I want to put all the contents of the INPUT tags into a
StringBuffer I can use in the creation of a Lucene document.
It was parsing correctly before, but the addItems method was getting a NULL
each time it was called.
I have been playing with the code to fix this problem and now end up with
the error below. I am lost.
Any tips would be greatly appreciated.
Thanks,
Luke
13:00:29,732java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:208)
at org.apache.commons.digester.Rule.end(Rule.java:228)
at org.apache.commons.digester.Digester.endElement(Digester.java:1067)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatc
her.dispatch(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1556)
at model.XMLParser.digest(XMLParser.java:40)
at model.XMLDocument.Document(XMLDocument.java:69)
at servlets.Update.indexDocs(Update.java:124)
at servlets.Update.indexDocs(Update.java:108)
at servlets.Update.doGet(Update.java:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:237)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:157)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:214)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContext
Valve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:152)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137
)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118
)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:683)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at model.Item.toString(Item.java:29)
at model.XMLParser.addItems(XMLParser.java:44)
... 48 more
java.lang.NullPointerException
at
org.apache.commons.digester.Digester.createSAXException(Digester.java:2792)
at
org.apache.commons.digester.Digester.createSAXException(Digester.java:2818)
at org.apache.commons.digester.Digester.endElement(Digester.java:1070)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatc
her.dispatch(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1556)
at model.XMLParser.digest(XMLParser.java:40)
at model.XMLDocument.Document(XMLDocument.java:69)
at servlets.Update.indexDocs(Update.java:124)
at servlets.Update.indexDocs(Update.java:108)
at servlets.Update.doGet(Update.java:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:237)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:157)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:214)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContext
Valve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:152)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137
)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118
)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:683)
at java.lang.Thread.run(Unknown Source)
public class XMLParser {
public Vector items;
private Digester digester;
private File parseMe;
public XMLParser(File file) {
parseMe = file;
items = new Vector();
}
public XMLParser digest() throws IOException, SAXException {
digester = new Digester();
digester.push(this);
digester.setValidating(false);
digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
digester.addSetNext("DATA/VERSION/ITEM", "addItems");
return (XMLParser)digester.parse(parseMe);
}
public void addItems(Item i) {
System.out.println("Adding: " + i.toString());
items.add(i);
}
}
public class Item {
String item;
public Item() { }
/**
* @param content The content to set.
*/
public void setItem(String _item) {
System.out.println("Adding to item object " + _item);
item = _item;
}
public String toString() {
return "This item contains: " + item.toString();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<DATA>
<DEF>
<TYPE>138</TYPE>
<TYPES/>
</DEF>
<VERSION>
<ITEM NAME="provider" TYPE="text">me</ITEM>
<ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
<ITEM NAME="name" TYPE="text">file1folder1</ITEM>
<ITEM NAME="desc" TYPE="text">rg</ITEM>
<ITEM NAME="select" TYPE="text">Please Select...</ITEM>
<ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
<ITEM NAME="sort" TYPE="text">3</ITEM>
<ITEM DIR="apache_config_command.txt" HEIGHT="-1" NAME="kcfileupload"
SIZE="942" STYPE="file" TYPE="upload"
WIDTH="-1">apache_config_command.txt</ITEM>
</VERSION>
</DATA>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org
Re: More Digester Help
Posted by Luke Shannon <ls...@hypermedia.com>.
I haven't. In fact I have never heard of it. I'll look into it now. I am in
favour of anything that makes the app easier to configure and is cool.
Thanks!
----- Original Message -----
From: "Marco Mistroni" <mm...@waersystems.com>
To: "'Jakarta Commons Users List'" <co...@jakarta.apache.org>
Sent: Wednesday, November 10, 2004 3:55 AM
Subject: RE: More Digester Help
> Hello Luke,
> Glad to know I have helped :-)
>
> Have you considered using an xml rule file instead of setting rules
> Programmatically?
>
> It's cool!
>
> Regards
> marco
>
> -----Original Message-----
> From: Luke Shannon [mailto:lshannon@hypermedia.com]
> Sent: 09 November 2004 19:27
> To: Jakarta Commons Users List
> Subject: Re: More Digester Help
>
> Hi Marco;
>
> You were right about the path. I made some changes following the
> document
> structure more carefully. It now works perfectly.
>
> Thanks for you help.
>
> Here is what I ended up with:
>
> public class XMLParser {
>
> public Vector items;
> private Digester digester;
> private File parseMe;
>
> public XMLParser(File file) {
> parseMe = file;
> items = new Vector();
> }
>
> public Version digest() throws IOException, SAXException {
> digester = new Digester();
> digester.setValidating(false);
> digester.addObjectCreate("DATA/VERSION", Version.class);
> digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
> digester.addBeanPropertySetter("DATA/VERSION/ITEM");
> digester.addSetNext("DATA/VERSION/ITEM", "setITEMS");
> return (Version)digester.parse(parseMe);
> }
> }
>
> ----- Original Message -----
> From: "Luke Shannon" <ls...@hypermedia.com>
> To: "Jakarta Commons Users List" <co...@jakarta.apache.org>
> Sent: Tuesday, November 09, 2004 1:48 PM
> Subject: Re: More Digester Help
>
>
> > Hi Marco;
> >
> > Here is the XML:
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <DATA>
> > <DEF>
> > <TYPE>138</TYPE>
> > <TYPES/>
> > </DEF>
> > <VERSION>
> > <ITEM NAME="provider" TYPE="text">me</ITEM>
> > <ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
> > <ITEM NAME="name" TYPE="text">file1folder1</ITEM>
> > <ITEM NAME="desc" TYPE="text">rg</ITEM>
> > <ITEM NAME="select" TYPE="text">Please Select...</ITEM>
> > <ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
> > <ITEM NAME="sort" TYPE="text">3</ITEM>
> > <ITEM DIR="apache_config_command.txt" HEIGHT="-1"
> NAME="kcfileupload"
> > SIZE="942" STYPE="file" TYPE="upload"
> > WIDTH="-1">apache_config_command.txt</ITEM>
> > </VERSION>
> > </DATA>
> >
> > Here is the XMLParser (uses Digester) and the Item class that I use to
> store
> > the data:
> >
> > public class XMLParser {
> >
> > public Vector items;
> > private Digester digester;
> > private File parseMe;
> >
> > public XMLParser(File file) {
> > parseMe = file;
> > items = new Vector();
> > }
> >
> > public XMLParser digest() throws IOException, SAXException {
> > digester = new Digester();
> > digester.push(this);
> > digester.setValidating(false);
> > digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
> > digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
> > digester.addSetNext("DATA/VERSION/ITEM", "addItems");
> > return (XMLParser)digester.parse(parseMe);
> > }
> >
> > public void addItems(Item i) {
> > System.out.println("Adding: " + i.toString());
> > items.add(i);
> > }
> > }
> >
> > public class Item {
> > String item;
> >
> > public Item() { }
> >
> > /**
> > * @param content The content to set.
> > */
> > public void setItem(String _item) {
> > System.out.println("Adding to item object " + _item);
> > item = _item;
> > }
> >
> > public String toString() {
> > return "This item contains: " + item.toString();
> > }
> > }
> >
> >
> >
> > ----- Original Message -----
> > From: "Marco Mistroni" <mm...@waersystems.com>
> > To: "'Jakarta Commons Users List'" <co...@jakarta.apache.org>
> > Sent: Tuesday, November 09, 2004 1:12 PM
> > Subject: RE: More Digester Help
> >
> >
> > > Hello,
> > > It will be useful If you can post the xml file and
> > > The code that you are putting in digester..
> > > If you got a null , it probably means that some path defined in your
> > > Rules are not correct....
> > >
> > > Regards
> > > marco
> > >
> > > -----Original Message-----
> > > From: Luke Shannon [mailto:lshannon@hypermedia.com]
> > > Sent: 09 November 2004 18:09
> > > To: commons-user@jakarta.apache.org
> > > Subject: More Digester Help
> > >
> > > Hi All;
> > >
> > > Sorry about the double post earlier. Mail client is a little wacky.
> > >
> > > I am trying to parse my XML document and am getting the error below.
> > >
> > > Underneath the error you will find my XML doc and my Digester class
> and
> > > Bean
> > > Class.
> > >
> > > Basically I want to put all the contents of the INPUT tags into a
> > > StringBuffer I can use in the creation of a Lucene document.
> > >
> > > It was parsing correctly before, but the addItems method was getting
> a
> > > NULL
> > > each time it was called.
> > >
> > > I have been playing with the code to fix this problem and now end up
> > > with
> > > the error below. I am lost.
> > >
> > > Any tips would be greatly appreciated.
> > >
> > > Thanks,
> > >
> > > Luke
> > >
> > >
> > >
> > > 13:00:29,732java.lang.reflect.InvocationTargetException
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> > > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> > > at java.lang.reflect.Method.invoke(Unknown Source)
> > > at
> > >
> org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:2
> > > 16)
> > > at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:208)
> > > at org.apache.commons.digester.Rule.end(Rule.java:228)
> > > at
> org.apache.commons.digester.Digester.endElement(Digester.java:1067)
> > > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> > > Source)
> > > at
> > >
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
> > > nown
> > > Source)
> > > at
> > >
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
> > > patc
> > > her.dispatch(Unknown Source)
> > > at
> > >
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
> > > wn
> > > Source)
> > > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
> Source)
> > > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
> Source)
> > > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> > > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> > > at org.apache.commons.digester.Digester.parse(Digester.java:1556)
> > > at model.XMLParser.digest(XMLParser.java:40)
> > > at model.XMLDocument.Document(XMLDocument.java:69)
> > > at servlets.Update.indexDocs(Update.java:124)
> > > at servlets.Update.indexDocs(Update.java:108)
> > > at servlets.Update.doGet(Update.java:81)
> > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > at
> > >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> > > tion
> > > FilterChain.java:237)
> > > at
> > >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> > > erCh
> > > ain.java:157)
> > > at
> > >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> > > e.ja
> > > va:214)
> > > at
> > >
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > > ntex
> > > t.java:104)
> > > at
> > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > > 20)
> > > at
> > >
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
> > > text
> > > Valve.java:198)
> > > at
> > >
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> > > e.ja
> > > va:152)
> > > at
> > >
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > > ntex
> > > t.java:104)
> > > at
> > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > > 20)
> > > at
> > >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> > > :137
> > > )
> > > at
> > >
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > > ntex
> > > t.java:104)
> > > at
> > >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> > > :118
> > > )
> > > at
> > >
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > > ntex
> > > t.java:102)
> > > at
> > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > > 20)
> > > at
> > >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> > > java
> > > :109)
> > > at
> > >
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > > ntex
> > > t.java:104)
> > > at
> > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > > 20)
> > > at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> > > at
> > >
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> > > at
> > >
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
> > > 9)
> > > at
> > >
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> > > onne
> > > ction(Http11Protocol.java:705)
> > > at
> > >
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
> > > 7)
> > > at
> > >
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
> > > .jav
> > > a:683)
> > > at java.lang.Thread.run(Unknown Source)
> > > Caused by: java.lang.NullPointerException
> > > at model.Item.toString(Item.java:29)
> > > at model.XMLParser.addItems(XMLParser.java:44)
> > > ... 48 more
> > > java.lang.NullPointerException
> > > at
> > >
> org.apache.commons.digester.Digester.createSAXException(Digester.java:27
> > > 92)
> > > at
> > >
> org.apache.commons.digester.Digester.createSAXException(Digester.java:28
> > > 18)
> > > at
> org.apache.commons.digester.Digester.endElement(Digester.java:1070)
> > > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> > > Source)
> > > at
> > >
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
> > > nown
> > > Source)
> > > at
> > >
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
> > > patc
> > > her.dispatch(Unknown Source)
> > > at
> > >
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
> > > wn
> > > Source)
> > > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
> Source)
> > > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
> Source)
> > > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> > > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> > > at org.apache.commons.digester.Digester.parse(Digester.java:1556)
> > > at model.XMLParser.digest(XMLParser.java:40)
> > > at model.XMLDocument.Document(XMLDocument.java:69)
> > > at servlets.Update.indexDocs(Update.java:124)
> > > at servlets.Update.indexDocs(Update.java:108)
> > > at servlets.Update.doGet(Update.java:81)
> > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > at
> > >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> > > tion
> > > FilterChain.java:237)
> > > at
> > >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> > > erCh
> > > ain.java:157)
> > > at
> > >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> > > e.ja
> > > va:214)
> > > at
> > >
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > > ntex
> > > t.java:104)
> > > at
> > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > > 20)
> > > at
> > >
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
> > > text
> > > Valve.java:198)
> > > at
> > >
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> > > e.ja
> > > va:152)
> > > at
> > >
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > > ntex
> > > t.java:104)
> > > at
> > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > > 20)
> > > at
> > >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> > > :137
> > > )
> > > at
> > >
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > > ntex
> > > t.java:104)
> > > at
> > >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> > > :118
> > > )
> > > at
> > >
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > > ntex
> > > t.java:102)
> > > at
> > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > > 20)
> > > at
> > >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> > > java
> > > :109)
> > > at
> > >
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > > ntex
> > > t.java:104)
> > > at
> > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > > 20)
> > > at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> > > at
> > >
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> > > at
> > >
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
> > > 9)
> > > at
> > >
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> > > onne
> > > ction(Http11Protocol.java:705)
> > > at
> > >
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
> > > 7)
> > > at
> > >
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
> > > .jav
> > > a:683)
> > > at java.lang.Thread.run(Unknown Source)
> > >
> > > public class XMLParser {
> > >
> > > public Vector items;
> > > private Digester digester;
> > > private File parseMe;
> > >
> > > public XMLParser(File file) {
> > > parseMe = file;
> > > items = new Vector();
> > > }
> > >
> > > public XMLParser digest() throws IOException, SAXException {
> > > digester = new Digester();
> > > digester.push(this);
> > > digester.setValidating(false);
> > > digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
> > > digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
> > > digester.addSetNext("DATA/VERSION/ITEM", "addItems");
> > > return (XMLParser)digester.parse(parseMe);
> > > }
> > >
> > > public void addItems(Item i) {
> > > System.out.println("Adding: " + i.toString());
> > > items.add(i);
> > > }
> > > }
> > >
> > > public class Item {
> > > String item;
> > >
> > > public Item() { }
> > >
> > > /**
> > > * @param content The content to set.
> > > */
> > > public void setItem(String _item) {
> > > System.out.println("Adding to item object " + _item);
> > > item = _item;
> > > }
> > >
> > > public String toString() {
> > > return "This item contains: " + item.toString();
> > > }
> > > }
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <DATA>
> > > <DEF>
> > > <TYPE>138</TYPE>
> > > <TYPES/>
> > > </DEF>
> > > <VERSION>
> > > <ITEM NAME="provider" TYPE="text">me</ITEM>
> > > <ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
> > > <ITEM NAME="name" TYPE="text">file1folder1</ITEM>
> > > <ITEM NAME="desc" TYPE="text">rg</ITEM>
> > > <ITEM NAME="select" TYPE="text">Please Select...</ITEM>
> > > <ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
> > > <ITEM NAME="sort" TYPE="text">3</ITEM>
> > > <ITEM DIR="apache_config_command.txt" HEIGHT="-1"
> > > NAME="kcfileupload"
> > > SIZE="942" STYPE="file" TYPE="upload"
> > > WIDTH="-1">apache_config_command.txt</ITEM>
> > > </VERSION>
> > > </DATA>
> > >
> > >
> > >
> > >
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail:
> commons-user-help@jakarta.apache.org
> > >
> > >
> > >
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail:
> commons-user-help@jakarta.apache.org
> > >
> > >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: commons-user-help@jakarta.apache.org
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org
RE: More Digester Help
Posted by Marco Mistroni <mm...@waersystems.com>.
Hello Luke,
Glad to know I have helped :-)
Have you considered using an xml rule file instead of setting rules
Programmatically?
It's cool!
Regards
marco
-----Original Message-----
From: Luke Shannon [mailto:lshannon@hypermedia.com]
Sent: 09 November 2004 19:27
To: Jakarta Commons Users List
Subject: Re: More Digester Help
Hi Marco;
You were right about the path. I made some changes following the
document
structure more carefully. It now works perfectly.
Thanks for you help.
Here is what I ended up with:
public class XMLParser {
public Vector items;
private Digester digester;
private File parseMe;
public XMLParser(File file) {
parseMe = file;
items = new Vector();
}
public Version digest() throws IOException, SAXException {
digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate("DATA/VERSION", Version.class);
digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
digester.addBeanPropertySetter("DATA/VERSION/ITEM");
digester.addSetNext("DATA/VERSION/ITEM", "setITEMS");
return (Version)digester.parse(parseMe);
}
}
----- Original Message -----
From: "Luke Shannon" <ls...@hypermedia.com>
To: "Jakarta Commons Users List" <co...@jakarta.apache.org>
Sent: Tuesday, November 09, 2004 1:48 PM
Subject: Re: More Digester Help
> Hi Marco;
>
> Here is the XML:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <DATA>
> <DEF>
> <TYPE>138</TYPE>
> <TYPES/>
> </DEF>
> <VERSION>
> <ITEM NAME="provider" TYPE="text">me</ITEM>
> <ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
> <ITEM NAME="name" TYPE="text">file1folder1</ITEM>
> <ITEM NAME="desc" TYPE="text">rg</ITEM>
> <ITEM NAME="select" TYPE="text">Please Select...</ITEM>
> <ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
> <ITEM NAME="sort" TYPE="text">3</ITEM>
> <ITEM DIR="apache_config_command.txt" HEIGHT="-1"
NAME="kcfileupload"
> SIZE="942" STYPE="file" TYPE="upload"
> WIDTH="-1">apache_config_command.txt</ITEM>
> </VERSION>
> </DATA>
>
> Here is the XMLParser (uses Digester) and the Item class that I use to
store
> the data:
>
> public class XMLParser {
>
> public Vector items;
> private Digester digester;
> private File parseMe;
>
> public XMLParser(File file) {
> parseMe = file;
> items = new Vector();
> }
>
> public XMLParser digest() throws IOException, SAXException {
> digester = new Digester();
> digester.push(this);
> digester.setValidating(false);
> digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
> digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
> digester.addSetNext("DATA/VERSION/ITEM", "addItems");
> return (XMLParser)digester.parse(parseMe);
> }
>
> public void addItems(Item i) {
> System.out.println("Adding: " + i.toString());
> items.add(i);
> }
> }
>
> public class Item {
> String item;
>
> public Item() { }
>
> /**
> * @param content The content to set.
> */
> public void setItem(String _item) {
> System.out.println("Adding to item object " + _item);
> item = _item;
> }
>
> public String toString() {
> return "This item contains: " + item.toString();
> }
> }
>
>
>
> ----- Original Message -----
> From: "Marco Mistroni" <mm...@waersystems.com>
> To: "'Jakarta Commons Users List'" <co...@jakarta.apache.org>
> Sent: Tuesday, November 09, 2004 1:12 PM
> Subject: RE: More Digester Help
>
>
> > Hello,
> > It will be useful If you can post the xml file and
> > The code that you are putting in digester..
> > If you got a null , it probably means that some path defined in your
> > Rules are not correct....
> >
> > Regards
> > marco
> >
> > -----Original Message-----
> > From: Luke Shannon [mailto:lshannon@hypermedia.com]
> > Sent: 09 November 2004 18:09
> > To: commons-user@jakarta.apache.org
> > Subject: More Digester Help
> >
> > Hi All;
> >
> > Sorry about the double post earlier. Mail client is a little wacky.
> >
> > I am trying to parse my XML document and am getting the error below.
> >
> > Underneath the error you will find my XML doc and my Digester class
and
> > Bean
> > Class.
> >
> > Basically I want to put all the contents of the INPUT tags into a
> > StringBuffer I can use in the creation of a Lucene document.
> >
> > It was parsing correctly before, but the addItems method was getting
a
> > NULL
> > each time it was called.
> >
> > I have been playing with the code to fix this problem and now end up
> > with
> > the error below. I am lost.
> >
> > Any tips would be greatly appreciated.
> >
> > Thanks,
> >
> > Luke
> >
> >
> >
> > 13:00:29,732java.lang.reflect.InvocationTargetException
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> > at java.lang.reflect.Method.invoke(Unknown Source)
> > at
> >
org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:2
> > 16)
> > at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:208)
> > at org.apache.commons.digester.Rule.end(Rule.java:228)
> > at
org.apache.commons.digester.Digester.endElement(Digester.java:1067)
> > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> > Source)
> > at
> >
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
> > nown
> > Source)
> > at
> >
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
> > patc
> > her.dispatch(Unknown Source)
> > at
> >
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
> > wn
> > Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
> > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> > at org.apache.commons.digester.Digester.parse(Digester.java:1556)
> > at model.XMLParser.digest(XMLParser.java:40)
> > at model.XMLDocument.Document(XMLDocument.java:69)
> > at servlets.Update.indexDocs(Update.java:124)
> > at servlets.Update.indexDocs(Update.java:108)
> > at servlets.Update.doGet(Update.java:81)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > at
> >
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> > tion
> > FilterChain.java:237)
> > at
> >
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> > erCh
> > ain.java:157)
> > at
> >
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> > e.ja
> > va:214)
> > at
> >
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> >
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> >
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
> > text
> > Valve.java:198)
> > at
> >
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> > e.ja
> > va:152)
> > at
> >
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> >
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> >
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> > :137
> > )
> > at
> >
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> >
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> > :118
> > )
> > at
> >
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:102)
> > at
> >
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> >
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> > java
> > :109)
> > at
> >
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> >
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> > at
> >
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> > at
> >
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
> > 9)
> > at
> >
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> > onne
> > ction(Http11Protocol.java:705)
> > at
> >
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
> > 7)
> > at
> >
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
> > .jav
> > a:683)
> > at java.lang.Thread.run(Unknown Source)
> > Caused by: java.lang.NullPointerException
> > at model.Item.toString(Item.java:29)
> > at model.XMLParser.addItems(XMLParser.java:44)
> > ... 48 more
> > java.lang.NullPointerException
> > at
> >
org.apache.commons.digester.Digester.createSAXException(Digester.java:27
> > 92)
> > at
> >
org.apache.commons.digester.Digester.createSAXException(Digester.java:28
> > 18)
> > at
org.apache.commons.digester.Digester.endElement(Digester.java:1070)
> > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> > Source)
> > at
> >
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
> > nown
> > Source)
> > at
> >
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
> > patc
> > her.dispatch(Unknown Source)
> > at
> >
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
> > wn
> > Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
> > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> > at org.apache.commons.digester.Digester.parse(Digester.java:1556)
> > at model.XMLParser.digest(XMLParser.java:40)
> > at model.XMLDocument.Document(XMLDocument.java:69)
> > at servlets.Update.indexDocs(Update.java:124)
> > at servlets.Update.indexDocs(Update.java:108)
> > at servlets.Update.doGet(Update.java:81)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > at
> >
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> > tion
> > FilterChain.java:237)
> > at
> >
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> > erCh
> > ain.java:157)
> > at
> >
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> > e.ja
> > va:214)
> > at
> >
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> >
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> >
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
> > text
> > Valve.java:198)
> > at
> >
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> > e.ja
> > va:152)
> > at
> >
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> >
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> >
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> > :137
> > )
> > at
> >
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> >
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> > :118
> > )
> > at
> >
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:102)
> > at
> >
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> >
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> > java
> > :109)
> > at
> >
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> >
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> > at
> >
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> > at
> >
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
> > 9)
> > at
> >
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> > onne
> > ction(Http11Protocol.java:705)
> > at
> >
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
> > 7)
> > at
> >
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
> > .jav
> > a:683)
> > at java.lang.Thread.run(Unknown Source)
> >
> > public class XMLParser {
> >
> > public Vector items;
> > private Digester digester;
> > private File parseMe;
> >
> > public XMLParser(File file) {
> > parseMe = file;
> > items = new Vector();
> > }
> >
> > public XMLParser digest() throws IOException, SAXException {
> > digester = new Digester();
> > digester.push(this);
> > digester.setValidating(false);
> > digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
> > digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
> > digester.addSetNext("DATA/VERSION/ITEM", "addItems");
> > return (XMLParser)digester.parse(parseMe);
> > }
> >
> > public void addItems(Item i) {
> > System.out.println("Adding: " + i.toString());
> > items.add(i);
> > }
> > }
> >
> > public class Item {
> > String item;
> >
> > public Item() { }
> >
> > /**
> > * @param content The content to set.
> > */
> > public void setItem(String _item) {
> > System.out.println("Adding to item object " + _item);
> > item = _item;
> > }
> >
> > public String toString() {
> > return "This item contains: " + item.toString();
> > }
> > }
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <DATA>
> > <DEF>
> > <TYPE>138</TYPE>
> > <TYPES/>
> > </DEF>
> > <VERSION>
> > <ITEM NAME="provider" TYPE="text">me</ITEM>
> > <ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
> > <ITEM NAME="name" TYPE="text">file1folder1</ITEM>
> > <ITEM NAME="desc" TYPE="text">rg</ITEM>
> > <ITEM NAME="select" TYPE="text">Please Select...</ITEM>
> > <ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
> > <ITEM NAME="sort" TYPE="text">3</ITEM>
> > <ITEM DIR="apache_config_command.txt" HEIGHT="-1"
> > NAME="kcfileupload"
> > SIZE="942" STYPE="file" TYPE="upload"
> > WIDTH="-1">apache_config_command.txt</ITEM>
> > </VERSION>
> > </DATA>
> >
> >
> >
> >
---------------------------------------------------------------------
> > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail:
commons-user-help@jakarta.apache.org
> >
> >
> >
---------------------------------------------------------------------
> > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail:
commons-user-help@jakarta.apache.org
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org
Re: More Digester Help
Posted by Luke Shannon <ls...@hypermedia.com>.
Hi Marco;
You were right about the path. I made some changes following the document
structure more carefully. It now works perfectly.
Thanks for you help.
Here is what I ended up with:
public class XMLParser {
public Vector items;
private Digester digester;
private File parseMe;
public XMLParser(File file) {
parseMe = file;
items = new Vector();
}
public Version digest() throws IOException, SAXException {
digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate("DATA/VERSION", Version.class);
digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
digester.addBeanPropertySetter("DATA/VERSION/ITEM");
digester.addSetNext("DATA/VERSION/ITEM", "setITEMS");
return (Version)digester.parse(parseMe);
}
}
----- Original Message -----
From: "Luke Shannon" <ls...@hypermedia.com>
To: "Jakarta Commons Users List" <co...@jakarta.apache.org>
Sent: Tuesday, November 09, 2004 1:48 PM
Subject: Re: More Digester Help
> Hi Marco;
>
> Here is the XML:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <DATA>
> <DEF>
> <TYPE>138</TYPE>
> <TYPES/>
> </DEF>
> <VERSION>
> <ITEM NAME="provider" TYPE="text">me</ITEM>
> <ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
> <ITEM NAME="name" TYPE="text">file1folder1</ITEM>
> <ITEM NAME="desc" TYPE="text">rg</ITEM>
> <ITEM NAME="select" TYPE="text">Please Select...</ITEM>
> <ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
> <ITEM NAME="sort" TYPE="text">3</ITEM>
> <ITEM DIR="apache_config_command.txt" HEIGHT="-1"
NAME="kcfileupload"
> SIZE="942" STYPE="file" TYPE="upload"
> WIDTH="-1">apache_config_command.txt</ITEM>
> </VERSION>
> </DATA>
>
> Here is the XMLParser (uses Digester) and the Item class that I use to
store
> the data:
>
> public class XMLParser {
>
> public Vector items;
> private Digester digester;
> private File parseMe;
>
> public XMLParser(File file) {
> parseMe = file;
> items = new Vector();
> }
>
> public XMLParser digest() throws IOException, SAXException {
> digester = new Digester();
> digester.push(this);
> digester.setValidating(false);
> digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
> digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
> digester.addSetNext("DATA/VERSION/ITEM", "addItems");
> return (XMLParser)digester.parse(parseMe);
> }
>
> public void addItems(Item i) {
> System.out.println("Adding: " + i.toString());
> items.add(i);
> }
> }
>
> public class Item {
> String item;
>
> public Item() { }
>
> /**
> * @param content The content to set.
> */
> public void setItem(String _item) {
> System.out.println("Adding to item object " + _item);
> item = _item;
> }
>
> public String toString() {
> return "This item contains: " + item.toString();
> }
> }
>
>
>
> ----- Original Message -----
> From: "Marco Mistroni" <mm...@waersystems.com>
> To: "'Jakarta Commons Users List'" <co...@jakarta.apache.org>
> Sent: Tuesday, November 09, 2004 1:12 PM
> Subject: RE: More Digester Help
>
>
> > Hello,
> > It will be useful If you can post the xml file and
> > The code that you are putting in digester..
> > If you got a null , it probably means that some path defined in your
> > Rules are not correct....
> >
> > Regards
> > marco
> >
> > -----Original Message-----
> > From: Luke Shannon [mailto:lshannon@hypermedia.com]
> > Sent: 09 November 2004 18:09
> > To: commons-user@jakarta.apache.org
> > Subject: More Digester Help
> >
> > Hi All;
> >
> > Sorry about the double post earlier. Mail client is a little wacky.
> >
> > I am trying to parse my XML document and am getting the error below.
> >
> > Underneath the error you will find my XML doc and my Digester class and
> > Bean
> > Class.
> >
> > Basically I want to put all the contents of the INPUT tags into a
> > StringBuffer I can use in the creation of a Lucene document.
> >
> > It was parsing correctly before, but the addItems method was getting a
> > NULL
> > each time it was called.
> >
> > I have been playing with the code to fix this problem and now end up
> > with
> > the error below. I am lost.
> >
> > Any tips would be greatly appreciated.
> >
> > Thanks,
> >
> > Luke
> >
> >
> >
> > 13:00:29,732java.lang.reflect.InvocationTargetException
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> > at java.lang.reflect.Method.invoke(Unknown Source)
> > at
> > org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:2
> > 16)
> > at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:208)
> > at org.apache.commons.digester.Rule.end(Rule.java:228)
> > at org.apache.commons.digester.Digester.endElement(Digester.java:1067)
> > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> > Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
> > nown
> > Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
> > patc
> > her.dispatch(Unknown Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
> > wn
> > Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> > at org.apache.commons.digester.Digester.parse(Digester.java:1556)
> > at model.XMLParser.digest(XMLParser.java:40)
> > at model.XMLDocument.Document(XMLDocument.java:69)
> > at servlets.Update.indexDocs(Update.java:124)
> > at servlets.Update.indexDocs(Update.java:108)
> > at servlets.Update.doGet(Update.java:81)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> > tion
> > FilterChain.java:237)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> > erCh
> > ain.java:157)
> > at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> > e.ja
> > va:214)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
> > text
> > Valve.java:198)
> > at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> > e.ja
> > va:152)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> > :137
> > )
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> > :118
> > )
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:102)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> > java
> > :109)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> > at
> > org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> > at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
> > 9)
> > at
> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> > onne
> > ction(Http11Protocol.java:705)
> > at
> > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
> > 7)
> > at
> > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
> > .jav
> > a:683)
> > at java.lang.Thread.run(Unknown Source)
> > Caused by: java.lang.NullPointerException
> > at model.Item.toString(Item.java:29)
> > at model.XMLParser.addItems(XMLParser.java:44)
> > ... 48 more
> > java.lang.NullPointerException
> > at
> > org.apache.commons.digester.Digester.createSAXException(Digester.java:27
> > 92)
> > at
> > org.apache.commons.digester.Digester.createSAXException(Digester.java:28
> > 18)
> > at org.apache.commons.digester.Digester.endElement(Digester.java:1070)
> > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> > Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
> > nown
> > Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
> > patc
> > her.dispatch(Unknown Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
> > wn
> > Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> > at org.apache.commons.digester.Digester.parse(Digester.java:1556)
> > at model.XMLParser.digest(XMLParser.java:40)
> > at model.XMLDocument.Document(XMLDocument.java:69)
> > at servlets.Update.indexDocs(Update.java:124)
> > at servlets.Update.indexDocs(Update.java:108)
> > at servlets.Update.doGet(Update.java:81)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> > tion
> > FilterChain.java:237)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> > erCh
> > ain.java:157)
> > at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> > e.ja
> > va:214)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
> > text
> > Valve.java:198)
> > at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> > e.ja
> > va:152)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> > :137
> > )
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> > :118
> > )
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:102)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> > java
> > :109)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> > at
> > org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> > at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
> > 9)
> > at
> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> > onne
> > ction(Http11Protocol.java:705)
> > at
> > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
> > 7)
> > at
> > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
> > .jav
> > a:683)
> > at java.lang.Thread.run(Unknown Source)
> >
> > public class XMLParser {
> >
> > public Vector items;
> > private Digester digester;
> > private File parseMe;
> >
> > public XMLParser(File file) {
> > parseMe = file;
> > items = new Vector();
> > }
> >
> > public XMLParser digest() throws IOException, SAXException {
> > digester = new Digester();
> > digester.push(this);
> > digester.setValidating(false);
> > digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
> > digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
> > digester.addSetNext("DATA/VERSION/ITEM", "addItems");
> > return (XMLParser)digester.parse(parseMe);
> > }
> >
> > public void addItems(Item i) {
> > System.out.println("Adding: " + i.toString());
> > items.add(i);
> > }
> > }
> >
> > public class Item {
> > String item;
> >
> > public Item() { }
> >
> > /**
> > * @param content The content to set.
> > */
> > public void setItem(String _item) {
> > System.out.println("Adding to item object " + _item);
> > item = _item;
> > }
> >
> > public String toString() {
> > return "This item contains: " + item.toString();
> > }
> > }
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <DATA>
> > <DEF>
> > <TYPE>138</TYPE>
> > <TYPES/>
> > </DEF>
> > <VERSION>
> > <ITEM NAME="provider" TYPE="text">me</ITEM>
> > <ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
> > <ITEM NAME="name" TYPE="text">file1folder1</ITEM>
> > <ITEM NAME="desc" TYPE="text">rg</ITEM>
> > <ITEM NAME="select" TYPE="text">Please Select...</ITEM>
> > <ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
> > <ITEM NAME="sort" TYPE="text">3</ITEM>
> > <ITEM DIR="apache_config_command.txt" HEIGHT="-1"
> > NAME="kcfileupload"
> > SIZE="942" STYPE="file" TYPE="upload"
> > WIDTH="-1">apache_config_command.txt</ITEM>
> > </VERSION>
> > </DATA>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: commons-user-help@jakarta.apache.org
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: commons-user-help@jakarta.apache.org
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org
Re: More Digester Help
Posted by Luke Shannon <ls...@hypermedia.com>.
Hi Marco;
You were right about the path. I made some changes following the document
structure more carefully. It now works perfectly.
Thanks for you help.
BTW, here is what I ended up with:
public class XMLParser {
public Vector items;
private Digester digester;
private File parseMe;
public XMLParser(File file) {
parseMe = file;
items = new Vector();
}
public Version digest() throws IOException, SAXException {
digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate("DATA/VERSION", Version.class);
digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
digester.addBeanPropertySetter("DATA/VERSION/ITEM");
digester.addSetNext("DATA/VERSION/ITEM", "setITEMS");
return (Version)digester.parse(parseMe);
}
}
----- Original Message -----
From: "Luke Shannon" <ls...@hypermedia.com>
To: "Jakarta Commons Users List" <co...@jakarta.apache.org>
Sent: Tuesday, November 09, 2004 1:48 PM
Subject: Re: More Digester Help
> Hi Marco;
>
> Here is the XML:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <DATA>
> <DEF>
> <TYPE>138</TYPE>
> <TYPES/>
> </DEF>
> <VERSION>
> <ITEM NAME="provider" TYPE="text">me</ITEM>
> <ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
> <ITEM NAME="name" TYPE="text">file1folder1</ITEM>
> <ITEM NAME="desc" TYPE="text">rg</ITEM>
> <ITEM NAME="select" TYPE="text">Please Select...</ITEM>
> <ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
> <ITEM NAME="sort" TYPE="text">3</ITEM>
> <ITEM DIR="apache_config_command.txt" HEIGHT="-1"
NAME="kcfileupload"
> SIZE="942" STYPE="file" TYPE="upload"
> WIDTH="-1">apache_config_command.txt</ITEM>
> </VERSION>
> </DATA>
>
> Here is the XMLParser (uses Digester) and the Item class that I use to
store
> the data:
>
> public class XMLParser {
>
> public Vector items;
> private Digester digester;
> private File parseMe;
>
> public XMLParser(File file) {
> parseMe = file;
> items = new Vector();
> }
>
> public XMLParser digest() throws IOException, SAXException {
> digester = new Digester();
> digester.push(this);
> digester.setValidating(false);
> digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
> digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
> digester.addSetNext("DATA/VERSION/ITEM", "addItems");
> return (XMLParser)digester.parse(parseMe);
> }
>
> public void addItems(Item i) {
> System.out.println("Adding: " + i.toString());
> items.add(i);
> }
> }
>
> public class Item {
> String item;
>
> public Item() { }
>
> /**
> * @param content The content to set.
> */
> public void setItem(String _item) {
> System.out.println("Adding to item object " + _item);
> item = _item;
> }
>
> public String toString() {
> return "This item contains: " + item.toString();
> }
> }
>
>
>
> ----- Original Message -----
> From: "Marco Mistroni" <mm...@waersystems.com>
> To: "'Jakarta Commons Users List'" <co...@jakarta.apache.org>
> Sent: Tuesday, November 09, 2004 1:12 PM
> Subject: RE: More Digester Help
>
>
> > Hello,
> > It will be useful If you can post the xml file and
> > The code that you are putting in digester..
> > If you got a null , it probably means that some path defined in your
> > Rules are not correct....
> >
> > Regards
> > marco
> >
> > -----Original Message-----
> > From: Luke Shannon [mailto:lshannon@hypermedia.com]
> > Sent: 09 November 2004 18:09
> > To: commons-user@jakarta.apache.org
> > Subject: More Digester Help
> >
> > Hi All;
> >
> > Sorry about the double post earlier. Mail client is a little wacky.
> >
> > I am trying to parse my XML document and am getting the error below.
> >
> > Underneath the error you will find my XML doc and my Digester class and
> > Bean
> > Class.
> >
> > Basically I want to put all the contents of the INPUT tags into a
> > StringBuffer I can use in the creation of a Lucene document.
> >
> > It was parsing correctly before, but the addItems method was getting a
> > NULL
> > each time it was called.
> >
> > I have been playing with the code to fix this problem and now end up
> > with
> > the error below. I am lost.
> >
> > Any tips would be greatly appreciated.
> >
> > Thanks,
> >
> > Luke
> >
> >
> >
> > 13:00:29,732java.lang.reflect.InvocationTargetException
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> > at java.lang.reflect.Method.invoke(Unknown Source)
> > at
> > org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:2
> > 16)
> > at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:208)
> > at org.apache.commons.digester.Rule.end(Rule.java:228)
> > at org.apache.commons.digester.Digester.endElement(Digester.java:1067)
> > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> > Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
> > nown
> > Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
> > patc
> > her.dispatch(Unknown Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
> > wn
> > Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> > at org.apache.commons.digester.Digester.parse(Digester.java:1556)
> > at model.XMLParser.digest(XMLParser.java:40)
> > at model.XMLDocument.Document(XMLDocument.java:69)
> > at servlets.Update.indexDocs(Update.java:124)
> > at servlets.Update.indexDocs(Update.java:108)
> > at servlets.Update.doGet(Update.java:81)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> > tion
> > FilterChain.java:237)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> > erCh
> > ain.java:157)
> > at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> > e.ja
> > va:214)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
> > text
> > Valve.java:198)
> > at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> > e.ja
> > va:152)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> > :137
> > )
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> > :118
> > )
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:102)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> > java
> > :109)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> > at
> > org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> > at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
> > 9)
> > at
> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> > onne
> > ction(Http11Protocol.java:705)
> > at
> > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
> > 7)
> > at
> > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
> > .jav
> > a:683)
> > at java.lang.Thread.run(Unknown Source)
> > Caused by: java.lang.NullPointerException
> > at model.Item.toString(Item.java:29)
> > at model.XMLParser.addItems(XMLParser.java:44)
> > ... 48 more
> > java.lang.NullPointerException
> > at
> > org.apache.commons.digester.Digester.createSAXException(Digester.java:27
> > 92)
> > at
> > org.apache.commons.digester.Digester.createSAXException(Digester.java:28
> > 18)
> > at org.apache.commons.digester.Digester.endElement(Digester.java:1070)
> > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> > Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
> > nown
> > Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
> > patc
> > her.dispatch(Unknown Source)
> > at
> > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
> > wn
> > Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> > at org.apache.commons.digester.Digester.parse(Digester.java:1556)
> > at model.XMLParser.digest(XMLParser.java:40)
> > at model.XMLDocument.Document(XMLDocument.java:69)
> > at servlets.Update.indexDocs(Update.java:124)
> > at servlets.Update.indexDocs(Update.java:108)
> > at servlets.Update.doGet(Update.java:81)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> > tion
> > FilterChain.java:237)
> > at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> > erCh
> > ain.java:157)
> > at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> > e.ja
> > va:214)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
> > text
> > Valve.java:198)
> > at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> > e.ja
> > va:152)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> > :137
> > )
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> > :118
> > )
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:102)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at
> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> > java
> > :109)
> > at
> > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> > ntex
> > t.java:104)
> > at
> > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> > 20)
> > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> > at
> > org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> > at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
> > 9)
> > at
> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> > onne
> > ction(Http11Protocol.java:705)
> > at
> > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
> > 7)
> > at
> > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
> > .jav
> > a:683)
> > at java.lang.Thread.run(Unknown Source)
> >
> > public class XMLParser {
> >
> > public Vector items;
> > private Digester digester;
> > private File parseMe;
> >
> > public XMLParser(File file) {
> > parseMe = file;
> > items = new Vector();
> > }
> >
> > public XMLParser digest() throws IOException, SAXException {
> > digester = new Digester();
> > digester.push(this);
> > digester.setValidating(false);
> > digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
> > digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
> > digester.addSetNext("DATA/VERSION/ITEM", "addItems");
> > return (XMLParser)digester.parse(parseMe);
> > }
> >
> > public void addItems(Item i) {
> > System.out.println("Adding: " + i.toString());
> > items.add(i);
> > }
> > }
> >
> > public class Item {
> > String item;
> >
> > public Item() { }
> >
> > /**
> > * @param content The content to set.
> > */
> > public void setItem(String _item) {
> > System.out.println("Adding to item object " + _item);
> > item = _item;
> > }
> >
> > public String toString() {
> > return "This item contains: " + item.toString();
> > }
> > }
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <DATA>
> > <DEF>
> > <TYPE>138</TYPE>
> > <TYPES/>
> > </DEF>
> > <VERSION>
> > <ITEM NAME="provider" TYPE="text">me</ITEM>
> > <ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
> > <ITEM NAME="name" TYPE="text">file1folder1</ITEM>
> > <ITEM NAME="desc" TYPE="text">rg</ITEM>
> > <ITEM NAME="select" TYPE="text">Please Select...</ITEM>
> > <ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
> > <ITEM NAME="sort" TYPE="text">3</ITEM>
> > <ITEM DIR="apache_config_command.txt" HEIGHT="-1"
> > NAME="kcfileupload"
> > SIZE="942" STYPE="file" TYPE="upload"
> > WIDTH="-1">apache_config_command.txt</ITEM>
> > </VERSION>
> > </DATA>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: commons-user-help@jakarta.apache.org
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: commons-user-help@jakarta.apache.org
> >
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org
Re: More Digester Help
Posted by Luke Shannon <ls...@hypermedia.com>.
Hi Marco;
Here is the XML:
<?xml version="1.0" encoding="UTF-8"?>
<DATA>
<DEF>
<TYPE>138</TYPE>
<TYPES/>
</DEF>
<VERSION>
<ITEM NAME="provider" TYPE="text">me</ITEM>
<ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
<ITEM NAME="name" TYPE="text">file1folder1</ITEM>
<ITEM NAME="desc" TYPE="text">rg</ITEM>
<ITEM NAME="select" TYPE="text">Please Select...</ITEM>
<ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
<ITEM NAME="sort" TYPE="text">3</ITEM>
<ITEM DIR="apache_config_command.txt" HEIGHT="-1" NAME="kcfileupload"
SIZE="942" STYPE="file" TYPE="upload"
WIDTH="-1">apache_config_command.txt</ITEM>
</VERSION>
</DATA>
Here is the XMLParser (uses Digester) and the Item class that I use to store
the data:
public class XMLParser {
public Vector items;
private Digester digester;
private File parseMe;
public XMLParser(File file) {
parseMe = file;
items = new Vector();
}
public XMLParser digest() throws IOException, SAXException {
digester = new Digester();
digester.push(this);
digester.setValidating(false);
digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
digester.addSetNext("DATA/VERSION/ITEM", "addItems");
return (XMLParser)digester.parse(parseMe);
}
public void addItems(Item i) {
System.out.println("Adding: " + i.toString());
items.add(i);
}
}
public class Item {
String item;
public Item() { }
/**
* @param content The content to set.
*/
public void setItem(String _item) {
System.out.println("Adding to item object " + _item);
item = _item;
}
public String toString() {
return "This item contains: " + item.toString();
}
}
----- Original Message -----
From: "Marco Mistroni" <mm...@waersystems.com>
To: "'Jakarta Commons Users List'" <co...@jakarta.apache.org>
Sent: Tuesday, November 09, 2004 1:12 PM
Subject: RE: More Digester Help
> Hello,
> It will be useful If you can post the xml file and
> The code that you are putting in digester..
> If you got a null , it probably means that some path defined in your
> Rules are not correct....
>
> Regards
> marco
>
> -----Original Message-----
> From: Luke Shannon [mailto:lshannon@hypermedia.com]
> Sent: 09 November 2004 18:09
> To: commons-user@jakarta.apache.org
> Subject: More Digester Help
>
> Hi All;
>
> Sorry about the double post earlier. Mail client is a little wacky.
>
> I am trying to parse my XML document and am getting the error below.
>
> Underneath the error you will find my XML doc and my Digester class and
> Bean
> Class.
>
> Basically I want to put all the contents of the INPUT tags into a
> StringBuffer I can use in the creation of a Lucene document.
>
> It was parsing correctly before, but the addItems method was getting a
> NULL
> each time it was called.
>
> I have been playing with the code to fix this problem and now end up
> with
> the error below. I am lost.
>
> Any tips would be greatly appreciated.
>
> Thanks,
>
> Luke
>
>
>
> 13:00:29,732java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at
> org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:2
> 16)
> at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:208)
> at org.apache.commons.digester.Rule.end(Rule.java:228)
> at org.apache.commons.digester.Digester.endElement(Digester.java:1067)
> at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> Source)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
> nown
> Source)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
> patc
> her.dispatch(Unknown Source)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
> wn
> Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> at org.apache.commons.digester.Digester.parse(Digester.java:1556)
> at model.XMLParser.digest(XMLParser.java:40)
> at model.XMLDocument.Document(XMLDocument.java:69)
> at servlets.Update.indexDocs(Update.java:124)
> at servlets.Update.indexDocs(Update.java:108)
> at servlets.Update.doGet(Update.java:81)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tion
> FilterChain.java:237)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> erCh
> ain.java:157)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> e.ja
> va:214)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> ntex
> t.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> 20)
> at
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
> text
> Valve.java:198)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> e.ja
> va:152)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> ntex
> t.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> 20)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> :137
> )
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> ntex
> t.java:104)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> :118
> )
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> ntex
> t.java:102)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> 20)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> java
> :109)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> ntex
> t.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> 20)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
> 9)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> onne
> ction(Http11Protocol.java:705)
> at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
> 7)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
> .jav
> a:683)
> at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.NullPointerException
> at model.Item.toString(Item.java:29)
> at model.XMLParser.addItems(XMLParser.java:44)
> ... 48 more
> java.lang.NullPointerException
> at
> org.apache.commons.digester.Digester.createSAXException(Digester.java:27
> 92)
> at
> org.apache.commons.digester.Digester.createSAXException(Digester.java:28
> 18)
> at org.apache.commons.digester.Digester.endElement(Digester.java:1070)
> at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> Source)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
> nown
> Source)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
> patc
> her.dispatch(Unknown Source)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
> wn
> Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> at org.apache.commons.digester.Digester.parse(Digester.java:1556)
> at model.XMLParser.digest(XMLParser.java:40)
> at model.XMLDocument.Document(XMLDocument.java:69)
> at servlets.Update.indexDocs(Update.java:124)
> at servlets.Update.indexDocs(Update.java:108)
> at servlets.Update.doGet(Update.java:81)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tion
> FilterChain.java:237)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> erCh
> ain.java:157)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> e.ja
> va:214)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> ntex
> t.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> 20)
> at
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
> text
> Valve.java:198)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> e.ja
> va:152)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> ntex
> t.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> 20)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> :137
> )
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> ntex
> t.java:104)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> :118
> )
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> ntex
> t.java:102)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> 20)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> java
> :109)
> at
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
> ntex
> t.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
> 20)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
> 9)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> onne
> ction(Http11Protocol.java:705)
> at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
> 7)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
> .jav
> a:683)
> at java.lang.Thread.run(Unknown Source)
>
> public class XMLParser {
>
> public Vector items;
> private Digester digester;
> private File parseMe;
>
> public XMLParser(File file) {
> parseMe = file;
> items = new Vector();
> }
>
> public XMLParser digest() throws IOException, SAXException {
> digester = new Digester();
> digester.push(this);
> digester.setValidating(false);
> digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
> digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
> digester.addSetNext("DATA/VERSION/ITEM", "addItems");
> return (XMLParser)digester.parse(parseMe);
> }
>
> public void addItems(Item i) {
> System.out.println("Adding: " + i.toString());
> items.add(i);
> }
> }
>
> public class Item {
> String item;
>
> public Item() { }
>
> /**
> * @param content The content to set.
> */
> public void setItem(String _item) {
> System.out.println("Adding to item object " + _item);
> item = _item;
> }
>
> public String toString() {
> return "This item contains: " + item.toString();
> }
> }
>
> <?xml version="1.0" encoding="UTF-8"?>
> <DATA>
> <DEF>
> <TYPE>138</TYPE>
> <TYPES/>
> </DEF>
> <VERSION>
> <ITEM NAME="provider" TYPE="text">me</ITEM>
> <ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
> <ITEM NAME="name" TYPE="text">file1folder1</ITEM>
> <ITEM NAME="desc" TYPE="text">rg</ITEM>
> <ITEM NAME="select" TYPE="text">Please Select...</ITEM>
> <ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
> <ITEM NAME="sort" TYPE="text">3</ITEM>
> <ITEM DIR="apache_config_command.txt" HEIGHT="-1"
> NAME="kcfileupload"
> SIZE="942" STYPE="file" TYPE="upload"
> WIDTH="-1">apache_config_command.txt</ITEM>
> </VERSION>
> </DATA>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org
RE: More Digester Help
Posted by Marco Mistroni <mm...@waersystems.com>.
Hello,
It will be useful If you can post the xml file and
The code that you are putting in digester..
If you got a null , it probably means that some path defined in your
Rules are not correct....
Regards
marco
-----Original Message-----
From: Luke Shannon [mailto:lshannon@hypermedia.com]
Sent: 09 November 2004 18:09
To: commons-user@jakarta.apache.org
Subject: More Digester Help
Hi All;
Sorry about the double post earlier. Mail client is a little wacky.
I am trying to parse my XML document and am getting the error below.
Underneath the error you will find my XML doc and my Digester class and
Bean
Class.
Basically I want to put all the contents of the INPUT tags into a
StringBuffer I can use in the creation of a Lucene document.
It was parsing correctly before, but the addItems method was getting a
NULL
each time it was called.
I have been playing with the code to fix this problem and now end up
with
the error below. I am lost.
Any tips would be greatly appreciated.
Thanks,
Luke
13:00:29,732java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:2
16)
at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:208)
at org.apache.commons.digester.Rule.end(Rule.java:228)
at org.apache.commons.digester.Digester.endElement(Digester.java:1067)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
nown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
patc
her.dispatch(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
wn
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1556)
at model.XMLParser.digest(XMLParser.java:40)
at model.XMLDocument.Document(XMLDocument.java:69)
at servlets.Update.indexDocs(Update.java:124)
at servlets.Update.indexDocs(Update.java:108)
at servlets.Update.doGet(Update.java:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tion
FilterChain.java:237)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erCh
ain.java:157)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.ja
va:214)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
text
Valve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.ja
va:152)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:137
)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntex
t.java:104)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:118
)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntex
t.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java
:109)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
9)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
onne
ction(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
7)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.jav
a:683)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at model.Item.toString(Item.java:29)
at model.XMLParser.addItems(XMLParser.java:44)
... 48 more
java.lang.NullPointerException
at
org.apache.commons.digester.Digester.createSAXException(Digester.java:27
92)
at
org.apache.commons.digester.Digester.createSAXException(Digester.java:28
18)
at org.apache.commons.digester.Digester.endElement(Digester.java:1070)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unk
nown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
patc
her.dispatch(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
wn
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1556)
at model.XMLParser.digest(XMLParser.java:40)
at model.XMLDocument.Document(XMLDocument.java:69)
at servlets.Update.indexDocs(Update.java:124)
at servlets.Update.indexDocs(Update.java:108)
at servlets.Update.doGet(Update.java:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tion
FilterChain.java:237)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erCh
ain.java:157)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.ja
va:214)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardCon
text
Valve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.ja
va:152)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:137
)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntex
t.java:104)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:118
)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntex
t.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java
:109)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveCo
ntex
t.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:5
20)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:79
9)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
onne
ction(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:57
7)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.jav
a:683)
at java.lang.Thread.run(Unknown Source)
public class XMLParser {
public Vector items;
private Digester digester;
private File parseMe;
public XMLParser(File file) {
parseMe = file;
items = new Vector();
}
public XMLParser digest() throws IOException, SAXException {
digester = new Digester();
digester.push(this);
digester.setValidating(false);
digester.addObjectCreate("DATA/VERSION/ITEM", Item.class);
digester.addCallMethod("DATA/VERSION/ITEM", "setItem", 0);
digester.addSetNext("DATA/VERSION/ITEM", "addItems");
return (XMLParser)digester.parse(parseMe);
}
public void addItems(Item i) {
System.out.println("Adding: " + i.toString());
items.add(i);
}
}
public class Item {
String item;
public Item() { }
/**
* @param content The content to set.
*/
public void setItem(String _item) {
System.out.println("Adding to item object " + _item);
item = _item;
}
public String toString() {
return "This item contains: " + item.toString();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<DATA>
<DEF>
<TYPE>138</TYPE>
<TYPES/>
</DEF>
<VERSION>
<ITEM NAME="provider" TYPE="text">me</ITEM>
<ITEM NAME="progress_ref" TYPE="text">1098818760440</ITEM>
<ITEM NAME="name" TYPE="text">file1folder1</ITEM>
<ITEM NAME="desc" TYPE="text">rg</ITEM>
<ITEM NAME="select" TYPE="text">Please Select...</ITEM>
<ITEM NAME="poster" TYPE="text">hypermedia</ITEM>
<ITEM NAME="sort" TYPE="text">3</ITEM>
<ITEM DIR="apache_config_command.txt" HEIGHT="-1"
NAME="kcfileupload"
SIZE="942" STYPE="file" TYPE="upload"
WIDTH="-1">apache_config_command.txt</ITEM>
</VERSION>
</DATA>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org