unexpected element (uri:"", local:"sean:person"). Expected elements are <{http://sean.com}person>
来源:互联网 发布:云南进出口贸易数据 编辑:程序博客网 时间:2024/05/21 14:57
详细报错如下:
Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"sean:person"). Expected elements are <{http://sean.com}person>at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:647)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:243)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:238)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:105)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1048)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:483)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:465)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:60)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:135)at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:229)at com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:112)at com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:95)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:312)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:292)at com.sean.JAXBHelper.getObjFromDoc(JAXBHelper.java:22)at com.sean.Test.main(Test.java:19)
期待的元素为person,其相应的命名空间为http://sean.com
获取到的元素为person,其相应的命名空间为空
XML Schema文件:
<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://sean.com"elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:element name="person"><xs:complexType><xs:sequence><xs:element name="name" type="xs:string"/><xs:element name="age" type="xs:unsignedShort"/></xs:sequence><xs:attribute name="id" type="xs:string"/></xs:complexType></xs:element></xs:schema>
通过Eclipse的JAXB插件,使用XML Schema生成的代码:
代码中一定要包含XmlRootElement标签才能使用JAXB进行正转、反转
package com.sean;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlAttribute;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;import javax.xml.bind.annotation.XmlSchemaType;import javax.xml.bind.annotation.XmlType;@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "", propOrder = { "name", "age"})@XmlRootElement(name = "person")public class Person { @XmlElement(required = true) protected String name; @XmlSchemaType(name = "unsignedShort") protected int age; @XmlAttribute(name = "id") protected String id; public String getName() { return name; } public void setName(String value) { this.name = value; } public int getAge() { return age; } public void setAge(int value) { this.age = value; } public String getId() { return id; } public void setId(String value) { this.id = value; }}
进行测试的XML文件:
<?xml version="1.0" encoding="UTF-8"?><sean:person xmlns:sean="http://sean.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><sean:name>abc</sean:name><sean:age>11</sean:age></sean:person>
测试方法类:
问题的原因是下面代码中被注释掉的那一行
解析XML文件并构建其对应的Document对象时,默认忽略元素对应的命令空间,JAXB在进行反转时,无法从Document对象中找到元素对应的命令空间,就会包标题的错
package com.sean;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;public class Test {public static void main(String[] args) throws Exception {String path = Test.class.getResource("/person.xml").getFile();File file = new File(path);DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(file); Object obj = JAXBHelper.getObjFromDoc(doc, Person.class); System.out.println(obj.toString());}}
0 0
- unexpected element (uri:"", local:"sean:person"). Expected elements are <{http://sean.com}person>
- unexpected element (uri:"", local:"prescDrug"). Expected elements 错误
- cxf Expected elements are <{http://****.com/}return>
- 不知道发布端(即服务器端)是哪种发布技术的情况下,客户端使用axis去调用,报错:unexpected element (uri:" Expected elements are <
- Webservice调用服务端 Unmarshalling Error: unexpected element (Xxx). Expected elements are Xxx
- person
- person
- Person
- webserver报XFireFault: Unmarshalling Error: unexpected element (uri:"http://server.iflytek.com/", loc
- 备忘, 总结Sean观点
- PRPC Performance Analysis ---- Sean Zhang
- Jaxb将xml转换为bean时异常javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"
- 高级 DAO 编程 作者:Sean C. Sullivan
- kshen转Sean's XML学习笔记
- Sean Parker谈投资与创业
- Sean Parker的七件轶事
- Sean Baxter 开发的GPU排序函数库
- Securing Sockets with OpenSSL By Sean Walton
- iOS学习之iOS沙盒(sandbox)机制和文件操作(一)
- 【BZOJ1007】[HNOI2008]水平可见直线【半平面交】
- js中的prototype和基于prototype的继承总结
- 对MVC的理解?为什么要用MVC?在Cocoa中MVC是怎么实现的?你还熟悉其他的OC设计模式或别的设计模式吗
- Java中Arrays.asList的使用
- unexpected element (uri:"", local:"sean:person"). Expected elements are <{http://sean.com}person>
- zoj3469——Food Delivery(区间dp)
- cp30连接池配置问题
- angularjs培训之filter
- MKMapSnapshotOptions生成地图快照
- web.xml的的不同版本的web-app头信息
- JVM调优总结(1):一些概念
- 基于态势感知的网络安全事件预测方法分析
- HDU-3184-All Can Do【思维】