2011-12-06 22 views
5

सब कुछ अपवाद के साथ ठीक काम कर रहा है कि मैं नामस्थान सही ढंग से नहीं बना सकता। किसी भी प्रकार की मदद की बेहद सराहना की जाती है!नियंत्रक में जेएक्सबी और स्प्रिंग @ रेस्पॉन्सबॉडी का उपयोग कर सही साइटमैप नेमस्पेस कैसे उत्पन्न करें?

मेरे नियंत्रक:

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

}

मेरे यूआरएल तत्व:

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

धन्यवाद!

उत्तर

5

तत्व निर्दिष्ट करने के लिए आप @XmlSchema एनोटेशन का लाभ उठा सकते हैं FormDefault योग्य है। यह आपके उपयोग के मामले में मदद करनी चाहिए।

@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

'पैकेज-सूचना' वास्तव में एक कक्षा है, इसलिए आपके पास उसी पैकेज में' पैकेज-info.java' होगा, जैसे कि आपके डोमेन क्लास में मेरे उत्तर में दी गई सामग्री के समान सामग्री है। –

+0

यह काम करता है। उसी धागे पर, आप एक्सएमएल के एन्कोडिंग को । मैंने देखा है कि मार्शलर को कैसे जोड़ना है, हालांकि, मेरा कोड मुझे – Pomario