1个不稳定版本
0.2.0 | 2022年9月21日 |
---|
#108 在 #xml-parser
64KB
1K SLoC
xml-doc
xml-doc是一个Rust库,用于读取、修改和写入XML文档。文档
它的目标是能够读取任何XML文件,并仅修改您想要修改的部分。
功能
- 添加log4rs支持
示例
use xml_doc_log4rs::{Document, Element};
let XML = r#"<?xml version="1.0"?>
<package xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata>
<dc:title>xml-doc</dc:title>
<dc:rights>MIT or Apache 2.0</dc:rights>
</metadata>
</package>
"#;
let doc = Document::parse_str(XML).unwrap();
let package = doc.root_element().unwrap();
let metadata = package.find(&doc, "metadata").unwrap();
let title = metadata.find(&doc, "title").unwrap();
title.set_attribute("xml:lang", "en");
// Add an element to metadata: <dc:creator id="author">Yoonchae Lee</dc:creator>
let author = Element::build(&mut doc, "dc:creator")
.text_content("Yoonchae Lee")
.attribute("id", "author")
.push_to(metadata);
let new_xml = doc.write_str();
性能
要运行基准测试: cd benches ; cargo bench
.
解析
tiny(4.8KB) medium(1.5MB) large(25MB) medium(UTF-16)
xml_doc v0.2.0: 73.79us 29.74ms 341.05ms 29.16ms
minidom v0.12.0: 85.19us 40.09ms 565.04ms
roxmltree v0.14.1: 49.34us 16.33ms 330.90ms
xmltree v0.10.3: 4065.8 us 1204.7 ms 21198. ms
仅roxmltree(不支持写入)比xml_doc快得多。您可以在这里查看基准测试结果。
依赖项
~6MB
~171K SLoC