JAXB如何解组XML文件

baggiowd 2008-06-02 05:48:25
编组OK,现在解组使用如下代码会提示 An exception occurred processing JSP page

JAXBContext jc = JAXBContext.newInstance("edu.xiyou.xml");
Unmarshaller u = jc.createUnmarshaller();
FileInputStream f = new FileInputStream("f:/eclipse/workspace/Web/data.xml");
JAXBElement J = (JAXBElement) u.unmarshal(f);

现在要解组出一个User的对象实例user 我这样写

User usrs = (User)j.getValue();

行吗?
帮忙谢谢。。。
...全文
170 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tavor 2008-06-03
  • 打赏
  • 举报
回复
我不是很了解你的data.xml是什么样子的,你把这段程序放一个普通的含main的程序里去调试一下,就知道了,看看到底是出现什么问题,这样也可以确定是不是这里出的问题

@XmlRootElement不在User类里的话,就不能用

User usrs = (User) u.unmarshal(f);
baggiowd 2008-06-02
  • 打赏
  • 举报
回复
我使用XSD生成的类,@XmlRootElement的注释在Collection里面
可是我直接用

User usrs = (User) u.unmarshal(f); 
的话
会出现An exception occurred processing JSP 提示。这是怎么回事,必须要捕捉这个异常吗,还是说哪里还有问题,因为在编组的时候就没有出现要捕捉异常的情况。。
谢谢。。
tavor 2008-06-02
  • 打赏
  • 举报
回复
不好意思写错了,不是@Xmlroot是@XmlRootElement这个Annotation
tavor 2008-06-02
  • 打赏
  • 举报
回复
你的User是由XSD或DTD生成的么,或者是有相应的Annotation修饰里面相应字段吗
而且必须保证User类没有@Xmlroot这个annotation的话就可以

如果User类有@Xmlroot这个annotation的话,就可以直接unmarshal得到User类的对象

JAXBContext jc = JAXBContext.newInstance("edu.xiyou.xml");
Unmarshaller u = jc.createUnmarshaller();
FileInputStream f = new FileInputStream("f:/eclipse/workspace/Web/data.xml");
User usrs = (User) u.unmarshal(f);

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧