#xml-parser #node #extension #reading #storing #mutable #szl

szl-simple-xml

一个简单的 XML 解析器 - 编辑者:Sazhelle Gutierrez-Moulton

1 个不稳定版本

0.1.3 2024年4月4日
0.1.2 2024年4月4日
0.1.1 2024年4月4日
0.1.0 2024年4月4日

#12 in #storing

自定义许可

20KB
384 行代码(不包括注释)

注意

你好!这是一个由 Freja Roberts 制作的工程,首先想向他们表示敬意。我还在慢慢地更新这个项目,因为它非常直观,但只是需要更新。

Szl Simple XML

Szl Simple xml 是一个小的 crate,用于读取、解析和存储 XML,作为从 simple-xml 的扩展。此扩展增加了获取可变节点

用法

示例解析


let note =
    szl_simple_xml::from_file("./examples/note.xml").expect("Failed to parse simple_xml");

let to = &note["to"][0];
let from = &note["from"][0];
let heading = &note.get_nodes("heading").expect("Missing heading")[0];
let body = &note["body"][0];
let lang = note
    .get_attribute("lang")
    .expect("Failed to get attribute lang");

对于更多示例,请参阅: 文档


lib.rs:

XML 解析器和写入器 此 crate 可以从文件或字符串中加载 XML 并将其解析到内存中。XML 也可以进行操作或创建,并写入文件

从文件加载 XML

fn load_message() -> Result<(), simple_xml::Error> {
    let root = simple_xml::from_file("examples/message.xml")?;
    // Since there can multiple nodes/tags with the same name, we need to index twice
    let heading = &root["heading"][0];
    println!("Heading: {}", heading.content);
    // Access attributes
    let lang = root.get_attribute("lang").expect("Missing lang attribute");
    println!("Language: {}", lang);
    Ok(())
}

创建 XML 结构

let name = String::from("Tim Roberts");
let health = 50;

let mut player = simple_xml::new("player", String::new());
player.add_new_node("health", health.to_string());
player.add_new_node("name", name);
// Save to file
player.save_to_file("./player.xml");

编辑 XML 结构

let file =     
   szl_simple_xml::from_file("./examples/note.xml").expect("Failed to parse simple_xml");
   let mut resources = 
       &mut file.get_mut_nodes("resources").unwrap()[0].get_mut_nodes("resource").unwrap()[0];
   
   let href = String::from("page1.html");
   let new_file_node = szl_simple_xml::new("file", String::new());
   new_file_node.add_attribute("href", &href);

   resources.add_node(new_file_node);
   let write_file = file.save_to_file_pretty("./test.xml")

更多示例请参见测试

没有运行时依赖