Sample code for 30+ languages & platforms
Rust

Demonstrate XML SearchForTag2

Demonstrates how to use SearchForTag2.

Chilkat Rust Downloads

Rust

let xml = chilkat::Xml::new();

// Load the following XML:

// 	<Test>
// 	    <testchild1>
// 	        test
// 	    </testchild1>
// 	    <testchild1>
// 	        test1
// 	    </testchild1>
// 	    <testchild1>
// 	        test2
// 	    </testchild1>
// 	    <testchild1>
// 	        test3
// 	    </testchild1>
// 	    <testchild1>
// 	        test4
// 	    </testchild1>
// 	    <testchild1>
// 	        test5
// 	    </testchild1>
// 	    <testchild1>
// 	        test6
// 	    </testchild1>
// 	</Test>

let _ = xml.load_xml("<Test><testchild1>test</testchild1><testchild1>test1</testchild1><testchild1>test2</testchild1><testchild1>test3</testchild1><testchild1>test4</testchild1><testchild1>test5</testchild1><testchild1>test6</testchild1></Test>").is_ok();

let mut i = 0;
let mut xml_search = xml.get_root().unwrap();
let mut after_ptr = xml.get_root().unwrap();

// Alway begin the search from the root.
while xml_search.search_for_tag2(Some(&after_ptr), "testchild1").is_ok() {
    // If successful, xmlSearch now points to the found element.
    i = i + 1;

    // Set afterPtr = xmlSearch (so we find the next match after the one we just found)
    // Rest xmlSearch to the root of the XML tree to be searched.
    println!("{}: {}", i, xml_search.content());
    let p_temp = after_ptr;
    after_ptr = xml_search;
    p_temp.get_root2();
    xml_search = p_temp;
}

println!("----");

// A better way:
let sb_state = chilkat::StringBuilder::new();
i = 0;
while xml.next_in_traversal2(&sb_state).is_ok() {
    if xml.tag_equals("testchild1") {
        println!("{}: {}", i, xml.content());
        i = i + 1;
    }

}

xml.get_root2();