1个不稳定版本

0.1.0 2024年8月9日

#1987解析器实现

Download history 104/week @ 2024-08-05 14/week @ 2024-08-12

118 每月下载量

MIT 许可证

14KB
343

html_forge

一个强大且高效的Rust HTML解析库

🚀 特性

  • 元素解析:轻松解析具有属性和嵌套子元素的HTML元素。
  • 文本解析:提取和管理文档中的文本节点。
  • 属性解析:处理单引号和双引号中的元素属性。
  • 注释解析:安全解析注释,即使包含特殊字符或嵌套连字符。
  • 错误处理:优雅地管理解析错误,如不匹配的标签和意外的文件结束(EOF)。

📦 安装

要使用 html_forge,请将以下内容添加到您的Cargo.toml中

[dependencies]
html_forge = "0.1.0"

用法

1. 基本解析示例

以下是使用html_forge解析简单HTML片段的方法

use html_forge::parser::Parser;
use html_forge::dom::Node;

fn main() {
    let input = "<div class='container'><p>Hello, world!</p></div>".to_string();
    let mut parser = Parser::new(input);
    
    match parser.parse() {
        Ok(node) => println!("Parsed Node: {:?}", node),
        Err(err) => eprintln!("Parsing error: {:?}", err),
    }
}

2. 处理错误

html_forge在解析过程中优雅地处理常见错误

use html_forge::{parser::Parser, errors::ParseError};

fn main() {
    let input = "<div><p>Unclosed div".to_string();
    let mut parser = Parser::new(input);

    match parser.parse() {
        Err(ParseError::UnexpectedEOF) => eprintln!("Error: Unexpected end of file"),
        Err(ParseError::MismatchedClosingTag) => eprintln!("Error: Mismatched closing tag"),
        Ok(node) => println!("Parsed Node: {:?}", node),
        Err(err) => eprintln!("Other parsing error: {:?}", err),
    }
}

🧪 测试

要运行测试,请使用

cargo test

👥 贡献

欢迎贡献!请随意打开问题、提交拉取请求或分叉仓库以进行改进。

📝 许可证

此库是开源的,可在MIT许可证下使用。

html_forge让您快乐地锻造!🛠️🚀

无运行时依赖