1use parse_html::{
2 dom::dom_tree::DomTree,
3 lexer::{lexer_trait::LexerTrait, tokenizer::Lexer},
4 parser::{ast::Parser, parser_trait::ParserTrait},
5};
6
7fn main() {
8 let html = r#"
9 <html lang="en">
10 <head>
11 <meta charset="UTF-8" />
12 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
13 <title>Document</title>
14 </head>
15 <body id="container">
16 ok ceci est un texte
17 <a href="2" id="l1">link1</a>
18 <a href="1">link2</a>
19 <form action="d" method="get">
20 <input type="text" name="name" />
21 </form>
22 </body>
23 </html>"#;
24
25 let mut lexer = Lexer::new(html);
26 let tokens = lexer.tokenize();
27
28 let mut parser = Parser::new(tokens);
33 let parsed = parser.parse();
34
35 println!("{:#?}", parsed);
36
37 match DomTree::new::<Lexer, Parser>(html) {
38 Ok(dom) => {
39 if let Some(container) = dom.get_by_id("container") {
40 println!("Node id='container' {:?}", container);
41 if let Some(l1) = container.get_by_id("l1") {
42 println!("Node id='l1' {:?}", l1);
43 }
44 } else {
45 println!("Id not found");
46 }
47 }
48 Err(e) => println!("Erreur de parsing : {:?}", e),
49 }
50}