2个版本
| 0.1.1 | 2023年7月13日 |
|---|---|
| 0.1.0 | 2023年7月13日 |
#2182 in 算法
13KB
257 行
xtoken
Iterator基于的no_std XML标记化程序,使用memchr.
设计目标
- 在字节切片上操作
- 最小验证
- 支持内联DTD声明
- 将整个输入划分为非空区间
示例
use xtoken::{Token, Tokenizer};
let tokens = Tokenizer::new(b"<x>Hello World!</x>").collect::<Vec<_>>();
assert_eq!(&tokens, &[
Token::Element(b"<x>"),
Token::Span(b"Hello World!"),
Token::ElementEnd(b"</x>"),
]);
let tokens = Tokenizer::new(b"<!DOCTYPE xml>").collect::<Vec<_>>();
assert_eq!(&tokens, &[
Token::Decl(b"<!DOCTYPE xml>")
]);
lib.rs:
xtoken
Iterator基于的no_std XML标记化程序,使用memchr.
设计目标
- 在字节切片上操作
- 最小验证
- 支持内联DTD声明
- 将整个输入划分为非空区间
示例
use xtoken::{Token, Tokenizer};
let tokens = Tokenizer::new(b"<x>Hello World!</x>").collect::<Vec<_>>();
assert_eq!(&tokens, &[
Token::Element(b"<x>"),
Token::Span(b"Hello World!"),
Token::ElementEnd(b"</x>"),
]);
let tokens = Tokenizer::new(b"<!DOCTYPE xml>").collect::<Vec<_>>();
assert_eq!(&tokens, &[
Token::Decl(b"<!DOCTYPE xml>")
]);
依赖
~170–315KB