5 releases (3 breaking)

0.4.1 Nov 3, 2020
0.4.0 Oct 2, 2019
0.3.0 Jul 10, 2018
0.2.0 Feb 4, 2018
0.1.0 Jan 3, 2017

#1721 in Parser implementations

Download history 746/week @ 2024-07-20 543/week @ 2024-07-27 752/week @ 2024-08-03 1022/week @ 2024-08-10 614/week @ 2024-08-17 724/week @ 2024-08-24 606/week @ 2024-08-31 494/week @ 2024-09-07 544/week @ 2024-09-14 783/week @ 2024-09-21 629/week @ 2024-09-28 548/week @ 2024-10-05 576/week @ 2024-10-12 608/week @ 2024-10-19 877/week @ 2024-10-26 971/week @ 2024-11-02

3,088 downloads per month
Used in 9 crates (7 directly)

MIT license

29KB
592 lines

sitemap, an Sitemap library for Rust

Chrono-utils on Travis CI Chrono-utils on crates.io

sitemap is an library for Rust programming language.

features

  • Streaming reading sitemap

Restrictions

  • no other encodings but UTF-8 are supported yet
  • validation is not supported

Building and using

sitemap uses Cargo, so just add a dependency section in your project's manifest:

[dependencies]
sitemap = "0.4"

Reading sitemap documents

sitemap::reader::SiteMapReader requires a Read instance to read from. When a proper stream-based encoding library is available, it is likely that sitemap will be switched to use whatever character stream structure this library would provide, but currently it is a Read.

Using SiteMapReader is very straightforward. Just provide a Read instance to obtain an iterator over events:

use sitemap::reader::{SiteMapReader,SiteMapEntity};
use std::fs::File;
fn main() {
    let mut urls = Vec::new();
    let mut sitemaps = Vec::new();
    let mut errors = Vec::new();
    let file = File::open("sitemap.xml").expect("Unable to open file.");
    let parser = SiteMapReader::new(file);
    for entity in parser {
        match entity {
            SiteMapEntity::Url(url_entry) => {
                urls.push(url_entry);
            },
            SiteMapEntity::SiteMap(sitemap_entry) => {
                sitemaps.push(sitemap_entry);
            },
            SiteMapEntity::Err(error) => {
                errors.push(error);
            },
        }
    }
    println!("urls = {:?}",urls);
    println!("sitemaps = {:?}",sitemaps);
    println!("errors = {:?}",errors);
}

Writng sitemap documents

use sitemap::writer::SiteMapWriter;
use sitemap::structs::UrlEntry;
use std::io::stdout;
fn main() {
    let mut output = stdout();
    let sitemap_writer = SiteMapWriter::new(&mut output);
    let mut urlwriter = sitemap_writer.start_urlset().expect("Unable to write urlset");
    urlwriter.url("http://github.com").expect("Unable to write url");
    urlwriter.url(UrlEntry::builder().loc("http://google.com")).expect("Unable to write url");
    urlwriter.url(UrlEntry::builder().loc("http://yandex.ru").build().unwrap()).expect("Unable to write url");
    urlwriter.end().expect("Unable to write close tags");
}

Roadmap

Highest priority first, approximately.

  1. Sitemap writer - done
  2. Sitemap validation

Known issues

All known issues are present on GitHub issue tracker: http://github.com/svmk/sitemap/issues. Feel free to post any found problems there.

License

This library is licensed under MIT license.

Dependencies

~3.5–4.5MB
~78K SLoC