spring - 如何在 Controller 中使用 JAXB 和 Spring @ResponseBody 生成正确的站点地图命名空间?

标签 spring controller jaxb sitemap

一切工作正常,但我无法正确创建命名空间。非常感谢任何帮助!

我的 Controller :

@Controller
@RequestMapping("/sitemap")
public class SitemapController
{
    public @ResponseBody XMLURLSet getSitemap(){
       XMLURLSet urlSet = new XMLURLSet();
       //populate urlList
       urlSet.setUrl(urlList);
       return urlSet;
    }
}

我的网址集:

@XmlRootElement(name = "url")
public class XMLURL {
   String loc;
   @XmlElement(name = "loc")
   public String getLoc(){
      return loc;
   }
   public void setLoc(String loc){
   this.loc = loc;
}

}

我的网址元素:

   @XmlRootElement(name = "urlset", namespace = "http://www.sitemaps.org/schemas/sitemap/0.9")
    public class XMLURLSet{
       List<XMLURL> url;
       public List<XMLURL> getUrl(){
          return url;
       }
       public void setUrl(List<XMLURL> url){
       this.url = url;
    }

}

我期望生成什么:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/</loc>
</url>

生成了什么:

<ns2:urlset xmlns:ns2="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/</loc>
</url>
</ns2:urlset>
</urlset> 

谢谢!

最佳答案

您可以利用@XmlSchema 注释来指定 elementFormDefault 是合格的。这应该对您的用例有所帮助。

@XmlSchema(
    namespace = "http://www.sitemaps.org/schemas/sitemap/0.9",
    elementFormDefault = XmlNsForm.QUALIFIED)
package example;

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

了解更多信息

关于spring - 如何在 Controller 中使用 JAXB 和 Spring @ResponseBody 生成正确的站点地图命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8402575/

相关文章:

api - 如何执行 DotNetNuke WebAPI 更新/删除?

java - Spring:同一类的多个 Controller 实例

java - 如何验证 hibernate.jdbc.batch_size 是否正常工作?

java - Hibernate Spring - @OneToMany - 外键未存储在数据库中

java - 使用Spring应用事件发布有什么优势?

java - JAXB - 将节点添加到 XML 作为 html 链接

java - 创建 SOAP 网络服务客户端的方法

java - 如何用 Hibernate 对树建模?

ruby-on-rails - 创建新的Rails Action 行不通吗?

json - 如何使用 JAXB 引用实现将 JAXB 对象序列化为 JSON?