libxml/tree/
nodetype.rs

1//! Types of libxml2 Nodes
2//!
3
4use crate::bindings::xmlElementType;
5
6/// Types of xml nodes
7#[derive(Debug, PartialEq, Eq)]
8#[allow(missing_docs)]
9pub enum NodeType {
10  ElementNode,
11  AttributeNode,
12  TextNode,
13  CDataSectionNode,
14  EntityRefNode,
15  EntityNode,
16  PiNode,
17  CommentNode,
18  DocumentNode,
19  DocumentTypeNode,
20  DocumentFragNode,
21  NotationNode,
22  HtmlDocumentNode,
23  DTDNode,
24  ElementDecl,
25  AttributeDecl,
26  EntityDecl,
27  NamespaceDecl,
28  XIncludeStart,
29  XIncludeEnd,
30  DOCBDocumentNode,
31}
32
33impl NodeType {
34  /// converts an integer from libxml's `enum NodeType`
35  /// to an instance of our `NodeType`
36  pub fn from_int(i: xmlElementType) -> Option<NodeType> {
37    match i {
38      1 => Some(NodeType::ElementNode),
39      2 => Some(NodeType::AttributeNode),
40      3 => Some(NodeType::TextNode),
41      4 => Some(NodeType::CDataSectionNode),
42      5 => Some(NodeType::EntityRefNode),
43      6 => Some(NodeType::EntityNode),
44      7 => Some(NodeType::PiNode),
45      8 => Some(NodeType::CommentNode),
46      9 => Some(NodeType::DocumentNode),
47      10 => Some(NodeType::DocumentTypeNode),
48      11 => Some(NodeType::DocumentFragNode),
49      12 => Some(NodeType::NotationNode),
50      13 => Some(NodeType::HtmlDocumentNode),
51      14 => Some(NodeType::DTDNode),
52      15 => Some(NodeType::ElementDecl),
53      16 => Some(NodeType::AttributeDecl),
54      17 => Some(NodeType::EntityDecl),
55      18 => Some(NodeType::NamespaceDecl),
56      19 => Some(NodeType::XIncludeStart),
57      20 => Some(NodeType::XIncludeEnd),
58      21 => Some(NodeType::DOCBDocumentNode),
59      _ => None,
60    }
61  }
62}