You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Rezaul Hoque <rh...@gmail.com> on 2004/11/08 03:54:21 UTC
Problem facing parse xml file with BeanReader in betwixt
Hello,
I am facing problem with Parsing xml file through BeanReader. Here are
my classes.
----StandardMenuItem.java----
public class StandardMenuItem {
private String idx;
private String icon;
private String link;
private String statusText;
private String tooltip;
private String value;
public StandardMenuItem() {
this.idx = "";
this.icon = "";
this.link = "";
this.statusText = "";
this.tooltip = "";
this.value = "";
}
public void setIdx(String idx) { this.idx = idx; }
public String getIdx() { return idx;}
public void setIcon(String icon) { this.icon = icon; }
public String getIcon() { return icon; }
public void setLink(String link) { this.link = link;}
public String getLink() { return link;}
public void setStatusText(String statusText) { this.statusText = statusText;}
public String getStatusText() { return statusText; }
public void setTooltip(String tooltip) { this.tooltip = tooltip; }
public String getTooltip() { return tooltip; }
public void setValue(String value) { this.value = value; }
public String getValue() { return value; }
}
----StandardMenuItemListBean.java---
import java.util.List;
import java.util.ArrayList;
public class StandardMenuItemListBean
{
private List menuItemList;
public StandardMenuItemListBean() { this.menuItemList = new ArrayList(); }
public List getStandardMenuItemList() { return menuItemList; }
public void addStandardMenuItem(StandardMenuItem menuItem) {
menuItemList.add(menuItem); }
}
----StandardMenuItemListBean.betwixt---
<?xml version="1.0" encoding="UTF-8" ?>
<info>
<element name="menu" />
<addDefaults />
</info>
----TestMenuWrite.java----
import java.io.*;
import java.beans.IntrospectionException;
import org.apache.commons.betwixt.BindingConfiguration;
import org.apache.commons.betwixt.io.BeanWriter;
import org.xml.sax.SAXException;
public class TestMenuWrite {
public static void main(String args[]) {
new TestMenuWrite().writeMenuFile();
}
public void writeMenuFile() {
try {
PrintWriter pw = new PrintWriter(new BufferedWriter(new
FileWriter("menu.xml")));
BeanWriter writer = new BeanWriter(pw);
writer.writeXmlDeclaration("<?xml version='1.0' encoding='UTF-8'?>");
writer.getBindingConfiguration().setMapIDs(false);
StandardMenuItemListBean menu = new StandardMenuItemListBean();
StandardMenuItem item = new StandardMenuItem();
item.setIdx("aboutUs");
item.setValue("About Us");
item.setLink("viewAboutUs");
item.setTooltip("about us");
item.setStatusText("[About Us]");
menu.addStandardMenuItem(item);
item = new StandardMenuItem();
item.setIdx("service");
item.setValue("Our Services");
item.setLink("viewServiceType");
item.setTooltip("services");
item.setStatusText("[Services]");
menu.addStandardMenuItem(item);
System.out.println(menu.getStandardMenuItemList().size());
writer.write(menu);
pw.flush();
pw.close();
//writer.enablePrettyPrint();
} catch(IOException e) {
System.err.println("IOException: " + e.getMessage());
} catch(SAXException e) {
System.err.println("SAXException: " + e.getMessage());
} catch(IntrospectionException e) {
System.err.println("IntrospectionException: " + e.getMessage());
}
}
}
----TestMenuRead.java----
import java.io.*;
import java.beans.IntrospectionException;
import org.apache.commons.betwixt.io.BeanReader;
import org.apache.commons.betwixt.BindingConfiguration;
import org.xml.sax.SAXException;
public class TestMenuRead {
public static void main(String args[]) {
new TestMenuRead().readMenu();
}
private void readMenu() {
try {
BeanReader reader = new BeanReader();
reader.registerBeanClass(StandardMenuItemListBean.class);
reader.getBindingConfiguration().setMapIDs(false);
File file = new File("menu.xml");
StandardMenuItemListBean menu = (StandardMenuItemListBean)reader.parse(file);
} catch(IOException e) {
System.err.println("IOException: " + e.getMessage());
} catch(SAXException e) {
e.printStackTrace();
} catch(IntrospectionException e) {
System.err.println("IntrospectionException: " + e.getMessage());
}
}
}
Now The menu.xml file creating nicely. So TestMenuWrite is working
well. But when I am trying to read from the menu.xml file through
TestMenuRead.java I am getting the follwing error message.
------------------------------
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
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.crimson.parser.Parser2.maybeElement(Unknown Source)
at org.apache.crimson.parser.Parser2.parseInternal(Unknown Source)
at org.apache.crimson.parser.Parser2.parse(Unknown Source)
at org.apache.crimson.parser.XMLReaderImpl.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1556)
at TestMenuRead.readMenu(TestMenuRead.java:20)
at TestMenuRead.main(TestMenuRead.java:11)
Is anybody there who can help me how I can solve this problem.. I am
eagerly waiting.
Thanks in advance....
Babu
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org
Re: Problem facing parse xml file with BeanReader in betwixt
Posted by robert burrell donkin <ro...@blueyonder.co.uk>.
hi
(you're probably not going to like this but) i've given your code a run
and (as far a i can tell) it runs fine on my machine.
some changes have been made to betwixt since the last release so it's
worth retrying with CVS HEAD (or a recently nightly) if you're using
the release. otherwise, it's very possible that you have an error in
your configuration. try turning up logging and looking at the trace -
or just hooking the betwixt source up to and IDE and debugging.
BTW you have a mistake in your betwixt file, the addDefaults needs to
be within the element tag (but that shouldn't cause a problem with your
symptoms).
- robert
On 8 Nov 2004, at 02:54, Rezaul Hoque wrote:
> Hello,
>
> I am facing problem with Parsing xml file through BeanReader. Here are
> my classes.
>
> ----StandardMenuItem.java----
>
> public class StandardMenuItem {
> private String idx;
> private String icon;
> private String link;
> private String statusText;
> private String tooltip;
> private String value;
>
> public StandardMenuItem() {
> this.idx = "";
> this.icon = "";
> this.link = "";
> this.statusText = "";
> this.tooltip = "";
> this.value = "";
> }
> public void setIdx(String idx) { this.idx = idx; }
> public String getIdx() { return idx;}
> public void setIcon(String icon) { this.icon = icon; }
> public String getIcon() { return icon; }
> public void setLink(String link) { this.link = link;}
> public String getLink() { return link;}
> public void setStatusText(String statusText) { this.statusText =
> statusText;}
> public String getStatusText() { return statusText; }
> public void setTooltip(String tooltip) { this.tooltip = tooltip; }
> public String getTooltip() { return tooltip; }
> public void setValue(String value) { this.value = value; }
> public String getValue() { return value; }
> }
>
> ----StandardMenuItemListBean.java---
>
> import java.util.List;
> import java.util.ArrayList;
>
> public class StandardMenuItemListBean
> {
> private List menuItemList;
> public StandardMenuItemListBean() { this.menuItemList = new
> ArrayList(); }
> public List getStandardMenuItemList() { return menuItemList; }
> public void addStandardMenuItem(StandardMenuItem menuItem) {
> menuItemList.add(menuItem); }
> }
>
>
> ----StandardMenuItemListBean.betwixt---
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <info>
> <element name="menu" />
> <addDefaults />
> </info>
>
> ----TestMenuWrite.java----
>
> import java.io.*;
> import java.beans.IntrospectionException;
>
> import org.apache.commons.betwixt.BindingConfiguration;
> import org.apache.commons.betwixt.io.BeanWriter;
> import org.xml.sax.SAXException;
>
> public class TestMenuWrite {
>
> public static void main(String args[]) {
> new TestMenuWrite().writeMenuFile();
> }
>
> public void writeMenuFile() {
> try {
> PrintWriter pw = new PrintWriter(new BufferedWriter(new
> FileWriter("menu.xml")));
> BeanWriter writer = new BeanWriter(pw);
> writer.writeXmlDeclaration("<?xml version='1.0' encoding='UTF-8'?>");
> writer.getBindingConfiguration().setMapIDs(false);
>
> StandardMenuItemListBean menu = new StandardMenuItemListBean();
>
> StandardMenuItem item = new StandardMenuItem();
> item.setIdx("aboutUs");
> item.setValue("About Us");
> item.setLink("viewAboutUs");
> item.setTooltip("about us");
> item.setStatusText("[About Us]");
> menu.addStandardMenuItem(item);
>
> item = new StandardMenuItem();
> item.setIdx("service");
> item.setValue("Our Services");
> item.setLink("viewServiceType");
> item.setTooltip("services");
> item.setStatusText("[Services]");
> menu.addStandardMenuItem(item);
> System.out.println(menu.getStandardMenuItemList().size());
>
> writer.write(menu);
> pw.flush();
> pw.close();
> //writer.enablePrettyPrint();
> } catch(IOException e) {
> System.err.println("IOException: " + e.getMessage());
> } catch(SAXException e) {
> System.err.println("SAXException: " + e.getMessage());
> } catch(IntrospectionException e) {
> System.err.println("IntrospectionException: " + e.getMessage());
> }
> }
> }
>
> ----TestMenuRead.java----
>
> import java.io.*;
>
> import java.beans.IntrospectionException;
> import org.apache.commons.betwixt.io.BeanReader;
> import org.apache.commons.betwixt.BindingConfiguration;
> import org.xml.sax.SAXException;
>
> public class TestMenuRead {
>
> public static void main(String args[]) {
> new TestMenuRead().readMenu();
> }
>
> private void readMenu() {
> try {
> BeanReader reader = new BeanReader();
> reader.registerBeanClass(StandardMenuItemListBean.class);
> reader.getBindingConfiguration().setMapIDs(false);
> File file = new File("menu.xml");
> StandardMenuItemListBean menu =
> (StandardMenuItemListBean)reader.parse(file);
> } catch(IOException e) {
> System.err.println("IOException: " + e.getMessage());
> } catch(SAXException e) {
> e.printStackTrace();
> } catch(IntrospectionException e) {
> System.err.println("IntrospectionException: " + e.getMessage());
> }
> }
> }
>
> Now The menu.xml file creating nicely. So TestMenuWrite is working
> well. But when I am trying to read from the menu.xml file through
> TestMenuRead.java I am getting the follwing error message.
>
> ------------------------------
> java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
> 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.crimson.parser.Parser2.maybeElement(Unknown
> Source)
> at org.apache.crimson.parser.Parser2.parseInternal(Unknown
> Source)
> at org.apache.crimson.parser.Parser2.parse(Unknown Source)
> at org.apache.crimson.parser.XMLReaderImpl.parse(Unknown
> Source)
> at
> org.apache.commons.digester.Digester.parse(Digester.java:1556)
> at TestMenuRead.readMenu(TestMenuRead.java:20)
> at TestMenuRead.main(TestMenuRead.java:11)
>
>
> Is anybody there who can help me how I can solve this problem.. I am
> eagerly waiting.
>
> Thanks in advance....
>
> Babu
>
> ---------------------------------------------------------------------
> 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