问题描述
xml文件很简单:如下<person> <hands> <hand type ="left"> <hand type ="right"> <hands><person>用Digester解析哦,我仿照apache提供的链接教材试了半天没出来,-_-!!!http://www.onjava.com/pub/a/onjava/2002/10/23/digester.html问题补充:to wangxuliangboy :<hand type ="left"> <hand>节点的type如何处理,我自己的代码与你的处理过程很类似,只是多了:digester.addSetProperties( "person/hands/hand ", "type", "type" );但返回的总是有问题,后台却不报错。。。!!
解决方案
不是你这样读取属性的..digester.addSetProperties("person"); //根据<person>元素的属性(attribute),对刚创建的person对象的属性(property)进行设置但你的Person对象里面必须有这些属性的get,set方法
解决方案二:
digester.addSetProperties("foo"); //根据<foo>元素的属性(attribute),对刚创建的Foo对象的属性(property)进行设置
解决方案三:
Digester digester = new Digester();digester.setValidating(false); //不进行XML与相应的DTD的合法性验证digester.addObjectCreate("person","与Person对应的类,比如:aa.Person"); //遇到<person>时创建一个person对象,并将其放在栈顶digester.addObjectCreate("person/hands", "与hands对应的类型"); //当遇到<person>的子元素<hands>时创建一个hands对象,并将其放在栈顶。//你的hand对象里面应该有type属性 digester.addObjectCreate("person/hands/hand", "与hand对应的类型"); //当遇到<person>的子元素<hands>的子元素<hand>时创建一个hand对象,并将其放在栈顶。//当在次遇到person/hands/hand结点时,调用addHand方法.这说明在与hands对应的类型中,你要加入一个addHand方法,//比如:public void addHand(Hand h){List.add(h);}digester.addSetNext("person/hands/hand","addHand","与hand对应的类型"); //当再次遇到<foo>的子元素<bar>时创建一个mypackage.Bar对象,并将其放在栈顶,同时调用第二栈顶元素(Foo对象)的addBar方法//最后在调用parse方法的时候会返回根对象Person foo=(Person)digester.parse(Digester_XMLParse.class.getResource("")+"dig.xml");System.out.println(foo.getName());