我正在尝试从html页面在我的Web服务中接收此对象。在eclipse打开的浏览器中工作正常,但是当我在firefox中尝试同样的事情时,我得到了一个问题:
引起:javax.xml.bind.UnmarshalException:意外元素(uri:“http://www.w3.org/1999/xhtml”,local:“userclient”)。预期元素是< {} userclient>
@XmlRootElement
public class Userclient {
@XmlElement
private String first_name;
@XmlElement
private String last_name;
@XmlElement
private String email;
public Userclient() {
}
//....
}
//Reciving
@PUT
@Consumes("application/xml")
public Response addUser(Userclient user,
@CookieParam("sessionId") String sessionCookie) {
}
//Sending
<script>
RestServlet.addUser({
$entity : userclient
});
</script>
答案 0 :(得分:1)
以下是根据XML的外观解决问题的几个选项:
输入XML
如果在XML中只有全局(顶级)元素是名称空间限定的:
<ns:userclient xmlns:ns="http://www.w3.org/1999/xhtml">
<first_name>Jane</first_name>
<ns:userclient>
<强> Userclient.java 强>
然后您可以在namespace
注释上指定@XmlRootElement
参数。
@XmlRootElement(namespace="http://www.w3.org/1999/xhtml"
public class Userclient {
输入XML
如果所有元素都符合命名空间,如:
<userclient xmlns="http://www.w3.org/1999/xhtml">
<first_name>Jane</first_name>
<userclient>
<强> package-info.java 强>
您可以使用包级别@XmlSchema
注释将名称空间限定应用于模型。
@XmlSchema(
namespace = "http://www.w3.org/1999/xhtml",
elementFormDefault = XmlNsForm.QUALIFIED)
package example;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
了解更多信息
以下是我博客上文章的链接,其中涵盖了有关JAXB和命名空间限定的更多信息:
您目前正在添加比必要更多的注释。 JAXB是异常配置,因此您只需要在希望XML表示与默认值不同的地方添加注释。
了解更多信息
以下是我博客上文章的链接,其中涵盖了有关JAXB默认XML表示的更多信息:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Userclient {
private String first_name;
private String last_name;
private String email;
public Userclient() {
}
//....
}