使用Java代码验证图片站点地图失败

时间:2019-05-17 15:28:21

标签: java validation xsd xml-sitemap

我有一个图像站点地图xml文件,我正在尝试使用Java代码针对某个架构对其进行验证:

URL schemaFile = new URL("https://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd");

Source xmlFile = new StreamSource(new File("web.xml"));
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

Schema schema = schemaFactory.newSchema(schemaFile);

Validator validator = schema.newValidator();
validator.validate(xmlFile);

和XML:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
    <loc>https://company.com/abc/is/images/A/AA/AAA/AAAA/A/product-name</loc>
    <image:image>
        <image:loc>https://company.com/abc/is/image//images/A/AA/AAA/AAAA</image:loc>
    </image:image>
</url>


我收到的Java验证错误是:

line: 2
column: 123
message: Cannot find the declaration of element 'urlset'.

1 个答案:

答案 0 :(得分:0)

是的,在XML中,urlset元素没有前缀,因此被认为在默认命名空间http://www.sitemaps.org/schemas/sitemap/0.9中。但是,在Java代码中,您使用的是错误的架构(不同的版本/名称空间):https://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd

是更改urlset XML元素的名称空间(也许带有前缀image?)还是在Java代码中加载其他模式(v0.9)。