如何从 struct 中创建 xml?

How to create xml from struct in rust?

我尝试从 Rust 中的结构创建一个 xml 字符串。该结构是嵌套的,我总是在 xml 中得到重复的标签。 我正在使用 serde-xml-rs 版本 0.5.1.

#[derive(Serialize, Debug)]
struct A {
   #[serde(rename(serialize = "B"))]
   pub b: B
}

#[derive(Serialize, Debug)]
struct B {
    pub c: String
}

let foo = A {
    b: B {
        c: "bar".to_string()
    }
};

println!("{:?}", to_string(&foo));

这会产生

<A>
    <B>
        <B>
            <c>bar</c>
        </B>
    </B>
</A>

我的期望:

<A>
    <B>
        <c>bar</c>
    </B>
</A>

如何才能只获得一个B标签?

您可以更改 B 结构以避免它像这样发出 <B> 标记:

#[derive(Serialize, Debug)]
struct B {
    pub c: String,
    #[serde(flatten, skip)]
    pub _d: (),
}