2011-12-06 28 views
5

Ad alanı doğru şekilde oluşturulamaması dışında her şey iyi çalışıyor. Herhangi bir yardım çok takdir edilir!Denetleyicide JAXB ve Spring @ResponseBody kullanarak doğru site haritası ad alanı nasıl oluşturulur?

Benim denetleyicisi:

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

Benim 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; 
} 

}

Benim url elemanı:

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

} 

ben oluşturulan olması bekleniyor Ne:

012 oluşturulan var ne
<?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> 

teşekkürler!

cevap

5

Öğe belirtme özelliğini belirtmek için @XmlSchema ek açıklamasını kaldırabilirsiniz. Bu kullanım durumunuzda yardımcı olmalıdır. Ayrıntılı Bilgi İçin

@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

nereden dosya paket bilgi içeriğini bulabilirim? – Pomario

+2

'package-info' aslında bir sınıftır, bu yüzden ben de 'package-info.java' ile aynı pakette, paketlerimdeki verilere benzer içerikle aynı sınıfta olacaksınız. –

+0

çalışır. Aynı konu üzerinde, oluşturmak için XML'in kodlamasını nasıl eklersiniz. Bununla birlikte, Marshler'ı nasıl manipüle ettiğimi anladım, ama benim kodum bu – Pomario