Rust使用dom操作xml

文章介绍了如何使用Crate库解析XML文件,获取和修改元数据,以及将修改后的XML保存回文件。示例展示了读取`test.xml`,操作`<metadata>`元素,并添加新的`creator`节点的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值