我有一些 XML,它的标签包含多个同名的同级标签,如下所示:
<foo>
<bar/>
<bar/>
</foo>
Run Code Online (Sandbox Code Playgroud)
(也可能有多个顶级<foo>,尽管我还没有抽出时间尝试(反)序列化它。)
使用此代码:
<foo>
<bar/>
<bar/>
</foo>
Run Code Online (Sandbox Code Playgroud)
并且不要忘记激活序列化功能:
[dependencies.quick-xml]
version = "0.18.1"
features = ["serialize"]
Run Code Online (Sandbox Code Playgroud)
我可以很好地反序列化,但是序列化添加了一个额外的<bar>标签作为bars包装实际<bar>标签的字段:
<Foo>
<bar>
<bar></bar>
<bar></bar>
</bar>
</Foo>
Run Code Online (Sandbox Code Playgroud)
#[serde(rename = "bar", default)]在现场,bars我第一次尝试根据fast-xml 的文档来解决这个问题,但它显然不起作用。我还查看了 serde 的文档,确实找到了一个flatten属性,但当我尝试将其应用到该领域时,它似乎不起作用bars。
除了手动实现之外,有什么方法可以获得我需要的序列化吗Deserialize?
如果相关的话,我尝试使用的实际数据格式是flam3 文件格式。这里有一个示例文件。该<flame>元素相当于<foo>此处,并且<xform>相当于<bar>。