quick-xml icon indicating copy to clipboard operation
quick-xml copied to clipboard

How to deserializes into generic struct that includes element name

Open killercup opened this issue 1 year ago • 2 comments

I'm trying to parse MaterialX files like this one. They include "node graphs" which are a list of different elements with quite similar attributes and child elements.

As I don't know what elements to expect up front (they can be defined by external definition files), my idea was to have a generic Node struct and deserialize into that and then process it at a later stage. This works -- but I lose access to the element name. Is there a way to add it in as a field, e.g. using #[serde(rename = "$element-name")]?

If you can point me at the right place I'd be happy to make a PR.

killercup avatar Jul 02 '24 03:07 killercup

The what is you need is to have a DOM element. I started investigating this in my dom branch (it is outdated, but I have rebased version on my home computer, I'll push it when I get home (~10h later). There are no changes in functionality in the rebased version, although).

The second commit in that branch is a very early version of what should be done. Feel free to take it and finish the work. I planned to finish it, but not in the near future (there a many other improvements planned in the base Reader which takes my attention).

Mingun avatar Jul 02 '24 04:07 Mingun

In #383 author describes exactly this use case and said that it works.

Mingun avatar Jul 23 '24 17:07 Mingun