Skip to main content

XmlDocument

Struct XmlDocument 

Source
pub struct XmlDocument { /* private fields */ }
Expand description

An XML document.

The document owns all nodes and provides methods for traversal and manipulation. It uses a flat vector storage with indices for efficient memory usage and cache locality.

Implementations§

Source§

impl XmlDocument

Source

pub fn new() -> Self

Creates a new empty document.

Source

pub fn document_node(&self) -> XmlNode

Creates a document node reference.

Source

pub fn get_root_element(&self) -> Result<XmlNode>

Returns the root element node.

Source

pub fn get_root_element_ro(&self) -> Result<XmlRoNode>

Returns the root element as a read-only node.

Source

pub fn namespace_resolver(&self) -> Arc<RwLock<NamespaceResolver>>

Returns the namespace resolver for this document.

Source

pub fn register_namespace(&self, prefix: &str, uri: &str)

Registers a namespace binding for XPath evaluation.

Source

pub fn register_namespaces<I, S1, S2>(&self, iter: I)
where I: IntoIterator<Item = (S1, S2)>, S1: AsRef<str>, S2: AsRef<str>,

Registers multiple namespace bindings at once.

§Example
use fastxml::parse;

let xml = "<root><child/></root>";
let doc = parse(xml).unwrap();
doc.register_namespaces([
    ("gml", "http://www.opengis.net/gml"),
    ("bldg", "http://www.opengis.net/citygml/building/2.0"),
]);

let ns = doc.namespaces();
assert!(ns.contains_key("gml"));
assert!(ns.contains_key("bldg"));
Source

pub fn namespaces(&self) -> HashMap<String, String>

Returns all namespace bindings as a map of prefix -> URI.

This includes namespaces declared in the document and any manually registered namespaces.

§Example
use fastxml::parse;

let xml = r#"<root xmlns:gml="http://www.opengis.net/gml"
                   xmlns:bldg="http://www.opengis.net/citygml/building/2.0">
    <gml:name>Test</gml:name>
</root>"#;
let doc = parse(xml).unwrap();

let namespaces = doc.namespaces();
assert_eq!(namespaces.get("gml"), Some(&"http://www.opengis.net/gml".to_string()));
assert_eq!(namespaces.get("bldg"), Some(&"http://www.opengis.net/citygml/building/2.0".to_string()));
Source

pub fn get_node(&self, id: NodeId) -> Option<XmlNode>

Gets a node by ID.

Source

pub fn get_node_ro(&self, id: NodeId) -> Option<XmlRoNode>

Gets a read-only node by ID.

Source

pub fn node_count(&self) -> usize

Returns the total number of nodes in the document.

Source

pub fn create_attribute_node(&self, name: &str, value: &str) -> XmlNode

Creates a pseudo-attribute node for XPath evaluation.

These nodes are added to the document’s node list and can be used in XPath results. They store the attribute name and value.

Source

pub fn create_namespace_node(&self, prefix: &str, uri: &str) -> XmlNode

Creates a pseudo-namespace node for XPath evaluation.

These nodes are added to the document’s node list and can be used in XPath results. They store the namespace prefix and URI.

Trait Implementations§

Source§

impl Clone for XmlDocument

Source§

fn clone(&self) -> XmlDocument

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for XmlDocument

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for XmlDocument

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more