java 关于 javax.xml.bind.Unmarshaller 根据xml反射对象的的问题 30

javax.xml.bind.UnmarshalException:unexpectedelement(uri:"",local:"BaseResidentsInfo")... javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"BaseResidentsInfo"). Expected elements are <{}baseResidentsInfo>
以上是异常
我定义一个类为BaseResidentsInfo,里面有一些属性,当我用unmarshal方法根据xml生成对象时候报错,
String xmlContext = “
<BaseResidentsInfo >"
+ "<ddf1df01ef06_0001>cxx</ddf1df01ef06_0001>"
+ "<ddf1df01ef06_0002>1</ddf1df01ef06_0002>"
+ "</BaseResidentsInfo>";

JAXBContext context = JAXBContext.newInstance(BaseResidentsInfo.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
unmarshaller.unmarshal(new StringReader(xmlContext));
但我把 <BaseResidentsInfo > 改成 <baseResidentsInfo > 这样就可以运行不报错,怎么回事
展开
 我来答
彭白卉pX
2013-05-17
知道答主
回答量:6
采纳率:100%
帮助的人:7874
展开全部
你的Bean加上注解,@XmlRootElement,这就不会报错了。
这个注解加在public class 上面。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jamxval
2013-01-24 · TA获得超过6822个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1431万
展开全部
你的代码主是这样没有 XML 文件和 XSD 直接用字符串的么?

XML 验证过没有?先在 Eclipse 这些工具中右击 Validate 验证一下,先确保这个 XML 与它所使用的 XSD 文件格式是匹配的,比如 XSD 里面说是 baseResidentsInfo 你就不能写成 BaseResidentsInfo,XML 是严格区分大小写的。而这些会被 JAXB 编译器写入代码中,未知的标签就会报告错误停止工作。

另外名字空间也必须匹配。
追问
我不是用的StringReader(xmlContext)读取的吗,xml是我自定义的格式肯定是正确的,与类是匹配的,类名是BaseResidentsInfo大写的,但是为什么xml标签要写成小写才行
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式