14个版本 (4个稳定版)
新 1.3.0 | 2024年8月2日 |
---|---|
1.2.0 | 2023年7月21日 |
1.1.0 | 2022年8月21日 |
1.0.0 | 2020年4月11日 |
0.4.0 | 2017年11月7日 |
#1842 in Web编程
每月308次下载
12KB
71 行
toks
针对 rcdom::RcDom
Handle
解析的高效令牌,旨在实现O(1)的HTML DOM遍历。
文档
使用方法
通过查看示例开始使用。
许可
MIT/Apache-2.0
lib.rs
:
针对 rcdom::RcDom
Handle
解析的高效令牌,旨在实现O(1)的HTML DOM遍历。
该库旨在提供方便且高效的HTML DOM元素处理。
示例
extern crate toks;
#[macro_use]
extern crate html5ever;
use toks::prelude::*;
use std::io::{self, Read};
pub struct LinkTok {
total: u32,
}
impl Tok for LinkTok {
fn is_match(&self, qn: &QualName) -> bool {
qn.local == local_name!("a")
}
fn process(&mut self, _: &mut Vec<Attribute>, _: &mut Vec<Handle>) {
self.total += 1;
}
}
// How to use
// $ cargo build --example count_links
// $ cat your.html | ./target/debug/examples/count_links
// Link <a> count 9
fn main() {
let mut chunk = String::new();
io::stdin().read_to_string(&mut chunk).unwrap();
let dom = parse_document(RcDom::default(), Default::default()).one(chunk);
let mut lt = LinkTok { total: 0 };
// Dropping mut reference
{
recursion(&mut vec![&mut lt], dom.document);
}
println!("Link <a> count {}", lt.total);
}
依赖项
~1.3–6MB
~34K SLoC