# 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::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(()) } ``` See the [traversal](examples/traverse.rs) 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 * Parse the XSD-defined WSDL types. The XML specification is nebulous, and it would be best left to a separate crate that can also generate Rust bindings.