2017-03-08 19:34:17 +00:00
|
|
|
#![deny(missing_docs)]
|
|
|
|
|
2017-02-21 14:46:06 +00:00
|
|
|
//! A minimal DOM crate built on top of xml-rs.
|
|
|
|
//!
|
|
|
|
//! This library exports an `Element` struct which represents a DOM tree.
|
|
|
|
//!
|
|
|
|
//! # Example
|
|
|
|
//!
|
|
|
|
//! Run with `cargo run --example articles`. Located in `examples/articles.rs`.
|
|
|
|
//!
|
|
|
|
//! ```rust,ignore
|
|
|
|
//! extern crate minidom;
|
|
|
|
//!
|
|
|
|
//! use minidom::Element;
|
|
|
|
//!
|
|
|
|
//! const DATA: &'static str = r#"<articles xmlns="article">
|
|
|
|
//! <article>
|
|
|
|
//! <title>10 Terrible Bugs You Would NEVER Believe Happened</title>
|
|
|
|
//! <body>
|
|
|
|
//! Rust fixed them all. <3
|
|
|
|
//! </body>
|
|
|
|
//! </article>
|
|
|
|
//! <article>
|
|
|
|
//! <title>BREAKING NEWS: Physical Bug Jumps Out Of Programmer's Screen</title>
|
|
|
|
//! <body>
|
|
|
|
//! Just kidding!
|
|
|
|
//! </body>
|
|
|
|
//! </article>
|
|
|
|
//! </articles>"#;
|
|
|
|
//!
|
|
|
|
//! const ARTICLE_NS: &'static str = "article";
|
|
|
|
//!
|
|
|
|
//! #[derive(Debug)]
|
|
|
|
//! pub struct Article {
|
|
|
|
//! title: String,
|
|
|
|
//! body: String,
|
|
|
|
//! }
|
|
|
|
//!
|
|
|
|
//! fn main() {
|
|
|
|
//! let root: Element = DATA.parse().unwrap();
|
|
|
|
//!
|
|
|
|
//! let mut articles: Vec<Article> = Vec::new();
|
|
|
|
//!
|
|
|
|
//! for child in root.children() {
|
|
|
|
//! if child.is("article", ARTICLE_NS) {
|
|
|
|
//! let title = child.get_child("title", ARTICLE_NS).unwrap().text();
|
|
|
|
//! let body = child.get_child("body", ARTICLE_NS).unwrap().text();
|
|
|
|
//! articles.push(Article {
|
|
|
|
//! title: title,
|
|
|
|
//! body: body.trim().to_owned(),
|
|
|
|
//! });
|
|
|
|
//! }
|
|
|
|
//! }
|
|
|
|
//!
|
|
|
|
//! println!("{:?}", articles);
|
|
|
|
//! }
|
|
|
|
//! ```
|
|
|
|
//!
|
|
|
|
//! # Usage
|
|
|
|
//!
|
2017-02-25 14:43:56 +00:00
|
|
|
//! To use `minidom`, add this to your `Cargo.toml` under `dependencies`:
|
2017-02-21 14:46:06 +00:00
|
|
|
//!
|
|
|
|
//! ```toml,ignore
|
2017-02-25 14:43:56 +00:00
|
|
|
//! minidom = "*"
|
2017-02-21 14:46:06 +00:00
|
|
|
//! ```
|
|
|
|
|
2017-06-07 20:40:53 +00:00
|
|
|
extern crate quick_xml;
|
2017-05-22 17:20:01 +00:00
|
|
|
#[macro_use] extern crate error_chain;
|
2017-02-19 19:46:44 +00:00
|
|
|
|
2017-03-08 19:34:17 +00:00
|
|
|
pub mod error;
|
|
|
|
pub mod element;
|
|
|
|
pub mod convert;
|
2017-08-13 00:35:24 +00:00
|
|
|
mod namespaces;
|
2017-02-19 19:46:44 +00:00
|
|
|
|
2017-03-08 19:34:17 +00:00
|
|
|
#[cfg(test)] mod tests;
|
2017-02-19 19:46:44 +00:00
|
|
|
|
2017-05-22 17:30:52 +00:00
|
|
|
pub use error::{Error, ErrorKind, Result, ResultExt};
|
2017-03-08 19:34:17 +00:00
|
|
|
pub use element::{Element, Node, Children, ChildrenMut, ElementBuilder};
|
2017-04-30 22:46:29 +00:00
|
|
|
pub use convert::{IntoElements, IntoAttributeValue, ElementEmitter};
|