我正在尝试使用jaxb生成xml.我创建了xsd并生成了java类.但是当我生成xml时,我将前缀ns2加入到根标记中,这是我不想要的.
例如:我想要root标签
<report>
<id>rep 1</id>
</report>
Run Code Online (Sandbox Code Playgroud)
,但得到
<ns2:report>
....
</ns2:report>
Run Code Online (Sandbox Code Playgroud)
在生成的java类中,我给出了注释 @XmlRootElement(name="report",namespace="urn:report")
有人可以帮助
bdo*_*han 12
如果这是你的班级:
package example;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="report",namespace="urn:report")
public class Root {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在根元素上有一个前缀是有道理的,因为你已经指定"root"元素是名称空间限定的而"id"元素不是.
<ns2:report xmlns:ns2="urn:report">
<id>123</id>
</ns2:report>
Run Code Online (Sandbox Code Playgroud)
如果将package-info类添加到模型中,则可以显示@XmlSchema注释:
@XmlSchema(
namespace = "urn:report",
elementFormDefault = XmlNsForm.QUALIFIED)
package example;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
Run Code Online (Sandbox Code Playgroud)
然后JAXB实现可以选择利用默认命名空间,但请注意,现在所有元素都是命名空间限定的,可能与您的XML模式匹配也可能不匹配:
<report xmlns="urn:report">
<id>123</id>
</report>
Run Code Online (Sandbox Code Playgroud)
有关JAXB和命名空间的更多信息,请参阅:
| 归档时间: |
|
| 查看次数: |
26606 次 |
| 最近记录: |