格式不正确的xml JAXB

时间:2012-05-19 19:43:49

标签: xml spring spring-mvc jaxb

尝试使用JAXB注释发送和xml文件,但我看到节点具有以下格式:

<:subject xmlns="http://www..." xmlns:atom="http://www.w3.org/2005/atom">
 <:data>maths<:data>
</:subject>

而不是:

<subject xmlns="http://www..." xmlns:atom="http://www.w3.org/2005/atom">
 <data>maths<data>
</subject>

我无法理解为什么会这样。从哪里插入:符号和为什么? Ť

My model has this form:


@XmlRootElement(name="subject")
@XmlAccessorType(XmlAccessType.FIELD)
public class Registration {

   private String data;

    get/set
}

我的package-info.java:

  @javax.xml.bind.annotation.XmlSchema (
   namespace="http://www..",
   elementFormDefault=XmlNsForm.QUALIFIED,
xmlns = { 
  @javax.xml.bind.annotation.XmlNs( prefix=" ", namespaceURI="http://www..."),
  @javax.xml.bind.annotation.XmlNs( prefix="atom" ,namespaceURI="http://www.w3.org/2005/atom")
})

 package mypackage.affil;

 import javax.xml.bind.annotation.XmlNsForm;

我的观点:

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
 <%@ page language="java" contentType="text/html"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html">
<title>Insert title here</title>
</head>
<body>

<h1>Create New Person</h1>

<c:url var="takeinto" value="/takedata" />
<form:form modelAttribute="takedataAttribute" method="POST" action="${takeinto}">
<table>
    <tr>
        <td><form:label path="data">Affiliation</form:label></td>
        <td><form:input path="data"/></td>
    </tr>

任何人都可以告诉我为什么这个符号会出现吗?

1 个答案:

答案 0 :(得分:0)

你在那里引发了一个奇怪的错误!我的猜测是问题在这里(我删除了Java命名空间名称,你可以在package-info.java中通过在import声明之后输入正确的package语句来完成:

@XmlSchema (
    namespace="http://www..",
    elementFormDefault=XmlNsForm.QUALIFIED,
    xmlns = { 
        @XmlNs( prefix=" ", namespaceURI="http://www..."),
        @XmlNs( prefix="atom" ,namespaceURI="http://www.w3.org/2005/atom")
})

我猜这是prefix使用一个空字符串而QUALIFIED使用elementFormDefault的组合。试试这个:

@XmlSchema(
    namespace="http://www..",
    elementFormDefault=XmlNsForm.UNQUALIFIED,
    xmlns = { 
        @XmlNs(prefix="atom", namespaceURI="http://www.w3.org/2005/atom")
})

UNQUALIFIED,仅为您想要合格的部分提供xmlns。你可能需要在@XmlElement标签上指定命名空间(文档有点不清楚)所以我还建议将其重构为接口中的常量;这也使事情变得更加清晰。