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 > 这样就可以运行不报错,怎么回事 展开
以上是异常
我定义一个类为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 > 这样就可以运行不报错,怎么回事 展开
2个回答
展开全部
你的Bean加上注解,@XmlRootElement,这就不会报错了。
这个注解加在public class 上面。
这个注解加在public class 上面。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的代码主是这样没有 XML 文件和 XSD 直接用字符串的么?
XML 验证过没有?先在 Eclipse 这些工具中右击 Validate 验证一下,先确保这个 XML 与它所使用的 XSD 文件格式是匹配的,比如 XSD 里面说是 baseResidentsInfo 你就不能写成 BaseResidentsInfo,XML 是严格区分大小写的。而这些会被 JAXB 编译器写入代码中,未知的标签就会报告错误停止工作。
另外名字空间也必须匹配。
XML 验证过没有?先在 Eclipse 这些工具中右击 Validate 验证一下,先确保这个 XML 与它所使用的 XSD 文件格式是匹配的,比如 XSD 里面说是 baseResidentsInfo 你就不能写成 BaseResidentsInfo,XML 是严格区分大小写的。而这些会被 JAXB 编译器写入代码中,未知的标签就会报告错误停止工作。
另外名字空间也必须匹配。
追问
我不是用的StringReader(xmlContext)读取的吗,xml是我自定义的格式肯定是正确的,与类是匹配的,类名是BaseResidentsInfo大写的,但是为什么xml标签要写成小写才行
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询