void write()

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