in src/main/java/org/apache/sling/sitemap/impl/builder/UrlImpl.java [116:166]
void write() throws SitemapException {
ensureNotWritten();
written = true;
try {
StringWriter urlChunk = new StringWriter();
XMLStreamWriter urlWriter = xmlWriterFactory.createXMLStreamWriter(urlChunk);
urlWriter.setPrefix(XMLConstants.DEFAULT_NS_PREFIX, SitemapImpl.SITEMAP_NAMESPACE);
urlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, "url", SitemapImpl.SITEMAP_NAMESPACE);
urlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, "loc", SitemapImpl.SITEMAP_NAMESPACE);
urlWriter.writeCharacters(location);
urlWriter.writeEndElement();
if (lastModified != null) {
urlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, "lastmod", SitemapImpl.SITEMAP_NAMESPACE);
urlWriter.writeCharacters(lastModified.atOffset(ZoneOffset.UTC).format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
urlWriter.writeEndElement();
}
if (changeFrequency != null) {
urlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, "changefreq", SitemapImpl.SITEMAP_NAMESPACE);
urlWriter.writeCharacters(changeFrequency.name().toLowerCase(Locale.ROOT));
urlWriter.writeEndElement();
}
if (priority != null) {
urlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, "priority", SitemapImpl.SITEMAP_NAMESPACE);
urlWriter.writeCharacters(String.valueOf(Math.max(Math.min(priority, 1.0), 0.0)));
urlWriter.writeEndElement();
}
urlWriter.flush();
// write the extensions as separate chunks to the same output
if (extensions != null) {
// use a single StringWriter and reset it for each extension to save memory
try (StringWriter extensionChunk = new StringWriter()) {
for (ExtensionMeta extension : extensions) {
writeExtension(extensionChunk, extension);
urlChunk.append(extensionChunk.asCharSequence());
extensionChunk.reset();
}
}
}
urlWriter.writeEndElement();
urlWriter.flush();
out.append(urlChunk.asCharSequence());
} catch (XMLStreamException ex) {
LOG.warn("Failed to serialize url", ex);
} catch (IOException ex) {
throw new SitemapException(ex);
}
}