2011-12-06 18 views
5

Wszystko działa dobrze z tym wyjątkiem, że nie mogę poprawnie utworzyć przestrzeni nazw. Każda pomoc jest doceniana!Jak wygenerować prawidłowy obszar nazw mapy przy użyciu JAXB i Spring @ResponseBody w kontrolerze?

Mój kontroler:

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

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

}

Moja elementem 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; 
    } 

} 

Co spodziewałem się być generowane:

<?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> 

Co został wygenerowany:

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

Dzięki!

Odpowiedz

5

Możesz użyć adnotacji @XmlSchema, aby określić element elementFormDefault. Powinno to pomóc w przypadku użycia.

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

Aby uzyskać więcej informacji

+0

Gdzie znajdę zawartość pliku pakietu-info? – Pomario

+2

'pakiet-informacje' jest tak naprawdę klasą, więc będziesz mieć' pakiet-info.java' w tym samym pakiecie co twoje klasy domeny z treścią podobną do tej podanej w mojej odpowiedzi. –

+0

to działa. w tym samym wątku, w jaki sposób dodać kodowanie XML, aby wygenerować . Widziałem, jak to zrobić, manipulując Marshleriem, ale mój kod nie pozwala mi tego zrobić – Pomario