pub struct Namespace<'input> { /* private fields */ }Expand description
A namespace.
Contains URI and prefix pair.
Implementations§
Source§impl<'input> Namespace<'input>
impl<'input> Namespace<'input>
Sourcepub fn name(&self) -> Option<&'input str>
pub fn name(&self) -> Option<&'input str>
Returns namespace name/prefix.
§Examples
let doc = roxmltree::Document::parse(
"<e xmlns:n='http://www.w3.org'/>"
).unwrap();
assert_eq!(doc.root_element().namespaces().nth(0).unwrap().name(), Some("n"));let doc = roxmltree::Document::parse(
"<e xmlns='http://www.w3.org'/>"
).unwrap();
assert_eq!(doc.root_element().namespaces().nth(0).unwrap().name(), None);Examples found in repository?
examples/stats.rs (line 39)
3fn main() {
4 let args: Vec<_> = std::env::args().collect();
5
6 if args.len() != 2 {
7 println!("Usage:\n\tcargo run --example stats -- input.xml");
8 std::process::exit(1);
9 }
10
11 let text = std::fs::read_to_string(&args[1]).unwrap();
12 let opt = roxmltree::ParsingOptions {
13 allow_dtd: true,
14 ..roxmltree::ParsingOptions::default()
15 };
16 let doc = match roxmltree::Document::parse_with_options(&text, opt) {
17 Ok(v) => v,
18 Err(e) => {
19 println!("Error: {}.", e);
20 std::process::exit(1);
21 }
22 };
23
24 println!(
25 "Elements count: {}",
26 doc.root().descendants().filter(|n| n.is_element()).count()
27 );
28
29 let attrs_count: usize = doc.root().descendants().map(|n| n.attributes().len()).sum();
30 println!("Attributes count: {}", attrs_count);
31
32 let ns_count: usize = doc.root().descendants().map(|n| n.namespaces().len()).sum();
33 println!("Namespaces count: {}", ns_count);
34
35 let mut uris = HashSet::new();
36 for node in doc.root().descendants() {
37 for ns in node.namespaces() {
38 uris.insert((
39 ns.name().unwrap_or("\"\"").to_string(),
40 ns.uri().to_string(),
41 ));
42 }
43 }
44 println!("Unique namespaces count: {}", uris.len());
45 if !uris.is_empty() {
46 println!("Unique namespaces:");
47 for (key, value) in uris {
48 println!(" {:?}: {}", key, value);
49 }
50 }
51
52 println!(
53 "Comments count: {}",
54 doc.root().descendants().filter(|n| n.is_comment()).count()
55 );
56
57 println!("Comments:");
58 for node in doc.root().descendants().filter(|n| n.is_comment()) {
59 println!("{:?}", node.text().unwrap());
60 }
61}Sourcepub fn uri(&self) -> &str
pub fn uri(&self) -> &str
Returns namespace URI.
§Examples
let doc = roxmltree::Document::parse(
"<e xmlns:n='http://www.w3.org'/>"
).unwrap();
assert_eq!(doc.root_element().namespaces().nth(0).unwrap().uri(), "http://www.w3.org");Examples found in repository?
examples/stats.rs (line 40)
3fn main() {
4 let args: Vec<_> = std::env::args().collect();
5
6 if args.len() != 2 {
7 println!("Usage:\n\tcargo run --example stats -- input.xml");
8 std::process::exit(1);
9 }
10
11 let text = std::fs::read_to_string(&args[1]).unwrap();
12 let opt = roxmltree::ParsingOptions {
13 allow_dtd: true,
14 ..roxmltree::ParsingOptions::default()
15 };
16 let doc = match roxmltree::Document::parse_with_options(&text, opt) {
17 Ok(v) => v,
18 Err(e) => {
19 println!("Error: {}.", e);
20 std::process::exit(1);
21 }
22 };
23
24 println!(
25 "Elements count: {}",
26 doc.root().descendants().filter(|n| n.is_element()).count()
27 );
28
29 let attrs_count: usize = doc.root().descendants().map(|n| n.attributes().len()).sum();
30 println!("Attributes count: {}", attrs_count);
31
32 let ns_count: usize = doc.root().descendants().map(|n| n.namespaces().len()).sum();
33 println!("Namespaces count: {}", ns_count);
34
35 let mut uris = HashSet::new();
36 for node in doc.root().descendants() {
37 for ns in node.namespaces() {
38 uris.insert((
39 ns.name().unwrap_or("\"\"").to_string(),
40 ns.uri().to_string(),
41 ));
42 }
43 }
44 println!("Unique namespaces count: {}", uris.len());
45 if !uris.is_empty() {
46 println!("Unique namespaces:");
47 for (key, value) in uris {
48 println!(" {:?}: {}", key, value);
49 }
50 }
51
52 println!(
53 "Comments count: {}",
54 doc.root().descendants().filter(|n| n.is_comment()).count()
55 );
56
57 println!("Comments:");
58 for node in doc.root().descendants().filter(|n| n.is_comment()) {
59 println!("{:?}", node.text().unwrap());
60 }
61}Trait Implementations§
impl<'input> Eq for Namespace<'input>
impl<'input> StructuralPartialEq for Namespace<'input>
Auto Trait Implementations§
impl<'input> Freeze for Namespace<'input>
impl<'input> RefUnwindSafe for Namespace<'input>
impl<'input> Send for Namespace<'input>
impl<'input> Sync for Namespace<'input>
impl<'input> Unpin for Namespace<'input>
impl<'input> UnwindSafe for Namespace<'input>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more