rust-libxml
rust-libxml copied to clipboard
missing ability to get all attributes including namespace
Consider this:
<foo xmlns:ns="http://example.com" bar="BAR" ns:bar="NS BAR" />
How can I find out that attributes bar
and ns:bar
both exist?
The Node
API offers get_attributes
which returns a HashMap
with all attributes, but this loses namespace information and I only get bar
once.
I can access individual attributes by namespace using get_attribute_ns
, but I have no way to find out which attributes exist in the first place. I would expect something like get_attributes_ns
which returns a vec of Node
(of type AttributeNode
, like what is returned by get_attribute_node
) in order to find this out. Or alternatively a get_attribute_names_ns
which gives a vec of attribute name, attribute namespace tuples.
Am I missing something or this is something the API doesn't implement yet?
Am I missing something or this is something the API doesn't implement yet?
I think the namespace support is lacking in the current wrapper, so this would need a new method, likely get_attributes_ns
, as you suggest.
I needed the same and have implemented it with the signature
pub fn get_properties_ns(&self) -> HashMap<(Option<Namespace>, String), String>
For my use case, I have implemented PartialEq
and Hash
for Namespace
using the methods get_prefix
and get_href
rather than ns_ptr
.
Shall I create a pull request? Or do you have a different signature or implementation in mind?
@anwaralameddin your suggestion sounds reasonable to me. I'm happy to accept such a PR!