如何在Rust中从结构体创建XML?

3

我尝试从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>

What I expect:

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

我该如何获取一个B标签?
1个回答

4
您可以更改 B 结构体以避免像这样发出一个 <B> 标记:
#[derive(Serialize, Debug)]
struct B {
    pub c: String,
    #[serde(flatten, skip)]
    pub _d: (),
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接