#html-parser #html #editor #dom #html-xml #parser

html_editor

纯朴的HTML解析器和编辑器

9个版本 (有破坏性)

0.7.0 2023年11月14日
0.6.1 2023年4月22日
0.5.3 2023年4月22日
0.5.2 2022年8月21日
0.4.0 2022年3月19日

#168 in 文本编辑器

Download history 234/week @ 2024-03-14 286/week @ 2024-03-21 253/week @ 2024-03-28 382/week @ 2024-04-04 222/week @ 2024-04-11 239/week @ 2024-04-18 195/week @ 2024-04-25 187/week @ 2024-05-02 219/week @ 2024-05-09 289/week @ 2024-05-16 134/week @ 2024-05-23 365/week @ 2024-05-30 225/week @ 2024-06-06 201/week @ 2024-06-13 295/week @ 2024-06-20 178/week @ 2024-06-27

988 每月下载次数
4 个crate中使用 (3 个直接使用)

MIT 许可证

52KB
933

crate-badge downloads-badge License check-badge

HTML Editor

纯朴的HTML解析器和编辑器。

示例

解析HTML片段/文档

let document: Vec<Node> = parse("<!doctype html><html><head></head><body></body></html>")?;
println!("{:#?}", document);

输出

[
    Doctype(
        Html,
    ),
    Element {
        name: "html",
        attrs: {},
        children: [
            Element {
                name: "head",
                attrs: {},
                children: [],
            },
            Element {
                name: "body",
                attrs: {},
                children: [],
            },
        ],
    },
]

您还可以使用 try_parse 来解析包含可容忍错误(html)

let document: Vec<Node> = try_parse("<div><span>Ipsum</div>");

通过选择器查询元素/元素

// let html = r#"..."#
let nodes: Vec<Node> = parse(html)?;
let selector: Selector = Selector::from(".box");

let element: Option<Element> = nodes.query(&selector);
let elements: Vec<Element> = nodes.query_all(&selector);

编辑HTML

// let html = r#"..."#
let a: String = parse(html)?.trim().html();
let b: String = parse(html)?.insert_to(&selector, node).html();
let c: String = parse(html)?.remove_by(&selector).html();
let d: String = parse(html)?.replace_with(&selector, |el| Node::Comment(el.html())).html();

您可以在文档中找到更多示例。

更新日志

查看CHANGELOG.md

无运行时依赖