macro_rules! xml_path {
($tag_name:literal => $t:ty) => { ... };
(* => $t:ty) => { ... };
($tag_name:literal) => { ... };
(*) => { ... };
($tag_name:literal => $t:ty, $($r_tag_name:tt $(=> $r_t:ty)?),+) => { ... };
(* => $t:ty, $($r_tag_name:tt $(=> $r_t:ty)?),+) => { ... };
($tag_name:literal, $($r_tag_name:tt $(=> $r_t:ty)?),+) => { ... };
(*, $($r_tag_name:tt $(=> $r_t:ty)?),+) => { ... };
}Expand description
Macro for easier construction of XML path.
This macro is alternative to building path by manually creating and nesting ElementEnter,
ElementDeserialize and ElementEnterDeserialize.
You can use * (not "*"!) to match any tag. Partial matching is currently not supported!
The last element must deserialize into a type!
ยงExample
let path = xml_path!("aaa", *, "ccc" => Ccc, "ddd", * => Eee);This will enter tags <aaa ...>, inside enter any tag, inside enter and deserialize <ccc ...>
tag into Ccc type, enter <ddd ...> tag tag and finaly deserialize any tag into Eee` type.
The TreeDeserializer with this path will be Iterator over Result<(Ccc, Eee), _> type.