引入crate:

xml-doc = {version = "*"}

read and write

use xml_doc::{Document, Element};

    let mut xml = r#"<?xml version="1.0"?>
    <package xmlflag="http://purl.org/dc/element/1.1/">
        <metadata>
            <title>xml-doc</title>
            <rights>MIT or Apache</rights>
        </metadata>
    </package>
    "#.to_string();

    let xml_file_name = "d:\\test.xml";
    if try_exists(xml_file_name).await? {
        let content = std::fs::read_to_string(xml_file_name)?;
        xml = content;
    }

    let mut doc = Document::parse_str(&xml).unwrap();
    let package = doc.root_element().unwrap();
    let mut attrs = package.attributes(&doc);
    for(k, v) in attrs{
        println!("all attrs:{} = {}", k, v);//attrs.get(k).unwrap()
    }
    println!("dc = {:?}", attrs.get("xmlflag").unwrap());

    let metadata = package.find(&mut doc, "metadata").unwrap();
    let title_node = metadata.find(&doc, "title").unwrap();
    println!("title_node.text={}", title_node.text_content(&doc));

    let author = Element::build(&mut doc, "creator")
        .text_content("henreash")
        .attribute("id", "001")
        .push_to(metadata);
    let new_xml = doc.write_str();
    println!("{:?}", new_xml);
    std::fs::write(xml_file_name, new_xml.unwrap().as_bytes()).unwrap();

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐