WSDL Rust XML bindings

This library simply wraps a WSDL XML file with an idiomatic Rust interface.

The underlying XML library is roxmltree, on top of which this library declares Rust newtypes to expose a native interface for reading WSDL files.

Usage

```rust

use anyhow::Result;

use wsdl::Wsdl;

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

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

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

Ok(())

} ```

See the traversal script for a complete (and usable) example. Run it with: ignore cargo run --example traverse ./path/to/my/service.wsdl

Error reporting

Errors generated by this library can be traced directly to the originating XML node. The originating node ID is embedded in the first parameter of [WsError].

Non-goals