pub trait Node: Clone {
type NodeIterator: Iterator<Item = Self>;
Show 33 methods
// Required methods
fn node_type(&self) -> NodeType;
fn name(&self) -> QualifiedName;
fn value(&self) -> Value;
fn to_string(&self) -> String;
fn to_xml(&self) -> String;
fn to_xml_with_options(&self, od: &OutputDefinition) -> String;
fn is_same(&self, other: &Self) -> bool;
fn document_order(&self) -> Vec<usize>;
fn cmp_document_order(&self, other: &Self) -> Ordering;
fn child_iter(&self) -> Self::NodeIterator;
fn ancestor_iter(&self) -> Self::NodeIterator;
fn owner_document(&self) -> Self;
fn descend_iter(&self) -> Self::NodeIterator;
fn next_iter(&self) -> Self::NodeIterator;
fn prev_iter(&self) -> Self::NodeIterator;
fn attribute_iter(&self) -> Self::NodeIterator;
fn get_attribute(&self, a: &QualifiedName) -> Value;
fn new_element(&self, qn: QualifiedName) -> Result<Self, Error>;
fn new_text(&self, v: Value) -> Result<Self, Error>;
fn new_attribute(&self, qn: QualifiedName, v: Value) -> Result<Self, Error>;
fn new_comment(&self, v: Value) -> Result<Self, Error>;
fn new_processing_instruction(
&self,
qn: QualifiedName,
v: Value
) -> Result<Self, Error>;
fn push(&mut self, n: Self) -> Result<(), Error>;
fn pop(&mut self) -> Result<(), Error>;
fn insert_before(&mut self, n: Self) -> Result<(), Error>;
fn add_attribute(&self, att: Self) -> Result<(), Error>;
fn shallow_copy(&self) -> Result<Self, Error>;
fn deep_copy(&self) -> Result<Self, Error>;
fn get_canonical(&self) -> Result<Self, Error>;
// Provided methods
fn to_json(&self) -> String { ... }
fn is_element(&self) -> bool { ... }
fn first_child(&self) -> Option<Self>
where Self: Sized { ... }
fn parent(&self) -> Option<Self>
where Self: Sized { ... }
}
Expand description
Nodes make up a document tree. Nodes must be fully navigable. The tree must be mutable but also stable (i.e. removing a node from the tree does not invalidate the remaining nodes).
Some nodes have names, such as elements. Some nodes have values, such as text or comments. Some have both a name and a value, such as attributes and processing instructions.
Element nodes have children and attributes.
Required Associated Types§
type NodeIterator: Iterator<Item = Self>
Required Methods§
sourcefn name(&self) -> QualifiedName
fn name(&self) -> QualifiedName
Get the name of the node. If the node doesn’t have a name, then returns a QualifiedName with an empty string for it’s localname.
sourcefn value(&self) -> Value
fn value(&self) -> Value
Get the value of the node. If the node doesn’t have a value, then returns a Value that is an empty string.
sourcefn to_xml_with_options(&self, od: &OutputDefinition) -> String
fn to_xml_with_options(&self, od: &OutputDefinition) -> String
Serialise the node as XML, with options such as indentation.
sourcefn document_order(&self) -> Vec<usize>
fn document_order(&self) -> Vec<usize>
Get the document order of the node. The value returned is relative to the document containing the node. Depending on the implementation, this value may be volatile; adding or removing nodes to/from the document may invalidate the ordering.
sourcefn cmp_document_order(&self, other: &Self) -> Ordering
fn cmp_document_order(&self, other: &Self) -> Ordering
Compare the document order of this node with another node in the same document.
sourcefn child_iter(&self) -> Self::NodeIterator
fn child_iter(&self) -> Self::NodeIterator
An iterator over the children of the node
sourcefn ancestor_iter(&self) -> Self::NodeIterator
fn ancestor_iter(&self) -> Self::NodeIterator
An iterator over the ancestors of the node
sourcefn owner_document(&self) -> Self
fn owner_document(&self) -> Self
Get the document node
sourcefn descend_iter(&self) -> Self::NodeIterator
fn descend_iter(&self) -> Self::NodeIterator
An iterator over the descendants of the node
sourcefn next_iter(&self) -> Self::NodeIterator
fn next_iter(&self) -> Self::NodeIterator
An iterator over the following siblings of the node
sourcefn prev_iter(&self) -> Self::NodeIterator
fn prev_iter(&self) -> Self::NodeIterator
An iterator over the preceding siblings of the node
sourcefn attribute_iter(&self) -> Self::NodeIterator
fn attribute_iter(&self) -> Self::NodeIterator
An iterator over the attributes of an element
sourcefn get_attribute(&self, a: &QualifiedName) -> Value
fn get_attribute(&self, a: &QualifiedName) -> Value
Get an attribute of the node. Returns a copy of the attribute’s value. If the node does not have an attribute of the given name, a value containing an empty string is returned.
sourcefn new_element(&self, qn: QualifiedName) -> Result<Self, Error>
fn new_element(&self, qn: QualifiedName) -> Result<Self, Error>
Create a new element-type node in the same document tree. The new node is not attached to the tree.
sourcefn new_text(&self, v: Value) -> Result<Self, Error>
fn new_text(&self, v: Value) -> Result<Self, Error>
Create a new text-type node in the same document tree. The new node is not attached to the tree.
sourcefn new_attribute(&self, qn: QualifiedName, v: Value) -> Result<Self, Error>
fn new_attribute(&self, qn: QualifiedName, v: Value) -> Result<Self, Error>
Create a new attribute-type node in the same document tree. The new node is not attached to the tree.
sourcefn new_comment(&self, v: Value) -> Result<Self, Error>
fn new_comment(&self, v: Value) -> Result<Self, Error>
Create a new comment-type node in the same document tree. The new node is not attached to the tree.
sourcefn new_processing_instruction(
&self,
qn: QualifiedName,
v: Value
) -> Result<Self, Error>
fn new_processing_instruction( &self, qn: QualifiedName, v: Value ) -> Result<Self, Error>
Create a new processing-instruction-type node in the same document tree. The new node is not attached to the tree.
sourcefn insert_before(&mut self, n: Self) -> Result<(), Error>
fn insert_before(&mut self, n: Self) -> Result<(), Error>
Insert a node in the child list before the given node. The node will be detached from it’s current position prior to insertion.
sourcefn add_attribute(&self, att: Self) -> Result<(), Error>
fn add_attribute(&self, att: Self) -> Result<(), Error>
Set an attribute. self must be an element-type node. att must be an attribute-type node.
sourcefn shallow_copy(&self) -> Result<Self, Error>
fn shallow_copy(&self) -> Result<Self, Error>
Shallow copy the node, i.e. copy only the node, but not it’s attributes or content.
sourcefn deep_copy(&self) -> Result<Self, Error>
fn deep_copy(&self) -> Result<Self, Error>
Deep copy the node, i.e. the node itself and it’s attributes and descendants. The resulting top-level node is unattached.
sourcefn get_canonical(&self) -> Result<Self, Error>
fn get_canonical(&self) -> Result<Self, Error>
Canonical XML representation of the node
Provided Methods§
sourcefn is_element(&self) -> bool
fn is_element(&self) -> bool
Check if a node is an element-type
sourcefn first_child(&self) -> Option<Self>where
Self: Sized,
fn first_child(&self) -> Option<Self>where
Self: Sized,
Get the first child of the node, if there is one