#idiomatic #wrapper #bindings #xml

nightly wsdl

WSDL 的 Rust 风格包装器

4 个版本

0.1.3 2023年7月29日
0.1.2 2023年7月27日
0.1.1 2023年7月22日
0.1.0 2021年9月26日

#idiomatic 中排名第 47

Download history 15/week @ 2024-03-30 85/week @ 2024-04-27

每月下载量 56

Apache-2.0/MIT

395KB
443 行代码(不包括注释)

WSDL Rust XML 绑定

此库简单地使用 Rust 风格接口包装 WSDL XML 文件。

底层 XML 库是 roxmltree,在此之上,此库声明 Rust 新类型以公开读取 WSDL 文件的本地接口。

用法

# use anyhow::Result;
use wsdl::Wsdl;

fn example() -> Result<()> {
    let input = std::fs::read_to_string("/path/to/my/service.wsdl")?;
    let document = roxmltree::Document::parse(&input)?;

    let wsdl = WsDefinitions::from_document(&document)?;
    for service in wsdl.services()? {
        println!("Service: {}", service.name()?);
    }

    for binding in wsdl.bindings()? {
        println!(
            "Binding: {} -> {}",
            binding.name()?,
            binding.port_type()?.name()?
        );
    }

    Ok(())
}

查看 遍历 脚本以获取完整(并可使用)的示例。运行它:

cargo run --example traverse ./path/to/my/service.wsdl

错误报告

此库生成的错误可以直接追踪到源 XML 节点。源节点 ID 包含在 [WsError] 的第一个参数中。

非目标

  • 解析 XSD 定义的 WSDL 类型。XML 规范模糊不清,最好留给可以生成 Rust 绑定的独立 crate。

依赖项

~0.5–1MB
~22K SLoC