2011-12-06 12 views
5

名前空間を正しく作成できないことを除いて、すべて正常に動作しています。どんな助けでも大歓迎です!JAXBとSpring @ ResponseBodyをコントローラで使用して正しいサイトマップ名前空間を生成する方法は?

マイコントローラ:

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

マイ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; 
} 

}

マイurl要素:

私は、生成されることが予想何
@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; 
    } 

} 

012生成され得たもの
<?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> 

ありがとう!

答えて

5

@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; 

+0

はどこでファイルパッケージ-情報の内容を見つけることができますか? – Pomario

+2

'package-info'は実際にはクラスなので、あなたのドメインクラスと同じパッケージに' package-info.java'を持っています。 –

+0

それが動作します。同じスレッド上で、<?xml version = "1.0" encoding = "UTF-8"?>を生成するために、XMLのエンコーディングをどのように追加しますか?私はMarshlerを操作する方法を見てきましたが、私のコードではこれを行うことができません。 – Pomario

関連する問題