2 个版本
使用旧的 Rust 2015
0.1.1 | 2018年8月27日 |
---|---|
0.1.0 | 2018年8月27日 |
#11 在 #sanitizer
35 每月下载
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