#html #tags #sanitizer #name #attributes #ignore #tag-parser

bin+lib html_sanitizer

可定制的 HTML 清洗器

2 个版本

使用旧的 Rust 2015

0.1.1 2018年8月27日
0.1.0 2018年8月27日

#11#sanitizer

35 每月下载

MIT 许可证

12KB
170

这个crate是一个简单的HTML清洗器,基于 html5ever 构建

使用这个crate,你可以为每个HTML标签确定你想要清洗的内容。这是通过传递给每个HTML标签的 Tag 结构体来完成的。

use std::fs::File;
use html_sanitizer::TagParser;

fn main() {
    let mut file = File::open("your_html_document.html").unwrap();
    let mut tag_parser = TagParser::new(&mut file);
    let result = tag_parser.walk(|tag| {
        if tag.name == "html" || tag.name == "body" {
            // ignore <html> and <body> tags, but still parse their children
            tag.ignore_self();
        } else if tag.name == "head" || tag.name == "script" || tag.name == "style" {
            // Ignore <head>, <script> and <style> tags, and all their children
            tag.ignore_self_and_contents();
        } else if tag.name == "a" {
            // Allow specific attributes
            tag.allow_attribute(String::from("href"));
        } else if tag.name == "img" {
            // Completely rewrite tags and their children
            tag.rewrite_as(String::from("<b>Images not allowed</b>"));
        } else {
            // Allow specific attributes
            tag.allow_attribute(String::from("style"));
        }
    });
    // result contains a string of your sanitized HTML
}

依赖

~1.1–2MB
~43K SLoC