Rustでxpathを使ってxml検索
amxml
というcrateを使って、xmlを検索します。他にも有用なcrateがあるようです。
$ cargo add amxml
use std::{fs::File, io::Read};
fn main() {
// contents にファイル全体を読み込み
let file_name: &str = "src/hoge.xml";
let mut f: File = File::open(file_name).expect("Fail to open file.");
let mut contents: String = String::new();
f.read_to_string(&mut contents).expect("Fail to read file.");
let document = amxml::dom::new_document(contents.as_str()).unwrap();
let xpath = document
.eval_xpath("/Package/types/name[text()='ApexClass']/../members")
.unwrap();
for i in 0..xpath.len() {
let element_name = xpath.get_item(i).as_nodeptr().unwrap().inner_xml();
println!("{}", element_name);
}
}