使用Java Spring构建sitemap.xml

时间:2015-07-30 03:18:37

标签: java xml spring sitemap

我正在构建一个Spring MVC的sitemap.xml

@XmlRootElement(name = "urlset")
public class XmlUrlSet{
@XmlElements(@XmlElement(name = "url", type = XmlUrl.class))
private List<XmlUrl> sitemap = new ArrayList<XmlUrl>();

public void addUrl(XmlUrl xmlUrl) {
    sitemap.add(xmlUrl);
}

public List<XmlUrl> getXmlUrls() {
    return sitemap;
}
}

它呈现如下:

<urlset>
    <url>
        ...
    </url>
    <url>
        ...
    </url>
</urlset>

我只是想知道如何为xml和xml版本添加名称空间,例如Google的站点地图示例?

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

1 个答案:

答案 0 :(得分:1)

我希望你找到解决方案。不过,这个答案可能对某人有所帮助。

@XmlRootElement(name = "urlset")替换@XmlRootElement(name = "urlset", namespace = "http://www.sitemaps.org/schemas/sitemap/0.9")可以解决您的问题。

<强>更新

如果您已尝试过以上解决方案。你会得到如下结果。

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

通过在包中添加package-info.java文件解决此问题,其中包含以下内容的XmlUrlSet类。

@XmlSchema(
    namespace="http://www.something.com/something", 
    elementFormDefault=XmlNsForm.QUALIFIED)
package your.package;

import javax.xml.bind.annotation.*;

它应该可以解决你的问题。

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