#reader #parser #parse #reader-writer

网站地图

网站地图解析器(读取器)和写入器

5 个版本 (3 个重大变更)

0.4.1 2020 年 11 月 3 日
0.4.0 2019 年 10 月 2 日
0.3.0 2018 年 7 月 10 日
0.2.0 2018 年 2 月 4 日
0.1.0 2017 年 1 月 3 日

#615解析器实现 中排名

Download history 725/week @ 2024-03-14 934/week @ 2024-03-21 697/week @ 2024-03-28 589/week @ 2024-04-04 615/week @ 2024-04-11 467/week @ 2024-04-18 439/week @ 2024-04-25 562/week @ 2024-05-02 397/week @ 2024-05-09 466/week @ 2024-05-16 508/week @ 2024-05-23 562/week @ 2024-05-30 1837/week @ 2024-06-06 2250/week @ 2024-06-13 2730/week @ 2024-06-20 3288/week @ 2024-06-27

每月下载量 10,194
9 包中使用(直接使用 7 个)

MIT 许可证

29KB
592

sitemap,Rust 的网站地图库

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

sitemap 是 Rust 编程语言的网站地图库。

特性

  • 流式读取网站地图

限制

  • 目前只支持 UTF-8 编码
  • 不支持验证

构建和使用

sitemap 使用 Cargo,所以只需在项目的清单文件中添加依赖项部分

[dependencies]
sitemap = "0.4"

读取网站地图文档

sitemap::reader::SiteMapReader 需要一个 Read 实例来读取。当有合适的基于流的编码库可用时,sitemap 可能会切换到使用该库提供的任何字符流结构,但目前它是一个 Read

使用 SiteMapReader 非常简单。只需提供一个 Read 实例即可获取事件迭代器

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

编写网站地图文档

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

路线图

优先级最高的先做,大致如此。

  1. 网站地图写入器 - 完成
  2. 网站地图验证

已知问题

所有已知问题都在 GitHub 问题跟踪器上:http://github.com/svmk/sitemap/issues。欢迎在那里发布任何发现的问题。

许可证

此库根据 MIT 许可证授权。

依赖项

~2.5MB
~71K SLoC