generate method

String generate()

Generate the complete sitemap XML string

Implementation

String generate() {
  final buffer = StringBuffer();
  buffer.writeln('<?xml version="1.0" encoding="UTF-8"?>');

  if (xslStylesheet != null) {
    buffer.writeln(
      '<?xml-stylesheet type="text/xsl" href="$xslStylesheet"?>',
    );
  }

  buffer.writeln(
    '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">',
  );

  final cleanBase = baseUrl.endsWith('/')
      ? baseUrl.substring(0, baseUrl.length - 1)
      : baseUrl;

  for (final entry in entries) {
    final cleanPath = entry.path.startsWith('/')
        ? entry.path
        : '/${entry.path}';
    final fullUrl = '$cleanBase$cleanPath';

    buffer.writeln('  <url>');
    buffer.writeln('    <loc>${_escapeXml(fullUrl)}</loc>');

    if (entry.lastModified != null) {
      buffer.writeln(
        '    <lastmod>${_formatDate(entry.lastModified!)}</lastmod>',
      );
    }

    buffer.writeln(
      '    <changefreq>${entry.changeFrequency.value}</changefreq>',
    );
    buffer.writeln(
      '    <priority>${entry.priority.toStringAsFixed(1)}</priority>',
    );

    buffer.writeln('  </url>');
  }

  buffer.writeln('</urlset>');
  return buffer.toString();
}