如何从使用JAXB生成的XML中删除默认的根元素名称空间前缀

Jin*_*ang 6 spring-mvc jaxb

我正在使用带有spring-mvc框架的JAXB来生成XML.这是根元素的示例:

<ns2:urlset xmlns:ns2="http://www.example.com">
Run Code Online (Sandbox Code Playgroud)

但是,这就是我想要的(没有XML名称空间前缀ns2):

<urlset xmlns="http://www.example.com">
Run Code Online (Sandbox Code Playgroud)

我试图使用以下内容package-info.java删除默认前缀ns2.

@javax.xml.bind.annotation.XmlSchema(  
    namespace = "http://www.example.com",   
    xmlns = {@javax.xml.bind.annotation.XmlNs(namespaceURI = "http://www.example.com", prefix="")},  
    elementFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED)  
package com.example.code
Run Code Online (Sandbox Code Playgroud)

ns2如果我设置prefix为另一个字符串,前缀可以更改为其他值(比).但是,通过将prefix值设置为"",无法删除前缀.它仍然显示默认值ns2.有没有办法删除默认前缀ns2

另一个问题是,如果standaloneXML的标题中的属性也可以删除吗?如果是这样,可以通过package-info.java吗?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 3

尝试这个:

包信息.java

    @XmlSchema(
    namespace="http://www.sitemaps.org/schemas/sitemap/0.9", 
    elementFormDefault=XmlNsForm.QUALIFIED)
package com.example.model;
import javax.xml.bind.annotation.XmlSchema;
import javax.xml.bind.annotation.XmlNsForm;
Run Code Online (Sandbox Code Playgroud)

XmlUrlSet.java

@XmlAccessorType(value = XmlAccessType.NONE)
@XmlRootElement(name = "urlset", namespace = "http://www.sitemaps.org/schemas/sitemap/0.9")
public class XmlUrlSet {...}
Run Code Online (Sandbox Code Playgroud)