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