Help with mixed sequence with attributes?
Hi there! Thank you for the excellent library.
I'm quite stuck and I was hoping someone might be able to help me. I'm trying to switch to quick-xml from serde-xml-rs and I've got everything switched except this last bit. I've got some XML that looks like this (excuse the escaped quotes):
<ifi-parties>
<ifi-standardized-name country=\"CH\" type=\"U.S. Company or Corporation\" number=\"070058\">
<addressbook>
<name>Company Name</name>
</addressbook>
</ifi-standardized-name>
<ifi-standardized-name-current country=\"CH\" number=\"070058\">
<addressbook>
<name>Company Name</name>
</addressbook>
</ifi-standardized-name-current>
</ifi-parties>
There's more deserialisation code, but the relevant bits are:
#[derive(Debug, Deserialize, PartialEq, NifMap)]
struct IfiParties {
ifi_standardized_name: Option<Vec<IfiStandardizedName>>,
ifi_standardized_name_current: Option<Vec<IfiStandardizedNameCurrent>>,
ifi_standardized_name_probable: Option<Vec<IfiStandardizedNameProbable>>,
}
#[derive(Debug, Deserialize, PartialEq, NifMap)]
struct IfiStandardizedName {
#[serde(rename = "@country")]
country: Option<String>,
#[serde(rename = "@type")]
r#type: Option<String>,
#[serde(rename = "@number")]
number: Option<u64>,
addressbook: Addressbook,
}
#[derive(Debug, Deserialize, PartialEq, NifMap)]
struct IfiStandardizedNameCurrent {
#[serde(rename = "@country")]
country: Option<String>,
#[serde(rename = "@type")]
r#type: Option<String>,
#[serde(rename = "@number")]
number: Option<u64>,
addressbook: Addressbook,
}
#[derive(Debug, Deserialize, PartialEq, NifMap)]
struct IfiStandardizedNameProbable {
#[serde(rename = "@country")]
country: Option<String>,
#[serde(rename = "@type")]
r#type: Option<String>,
#[serde(rename = "@number")]
addressbook: Addressbook,
}
#[derive(Debug, Deserialize, PartialEq, NifMap)]
struct Addressbook {
#[serde(rename = "$value", default)]
name: String,
}
No matter what I do, I'm getting None for ifi_standardized_name, ifi_standardized_name_current, and ifi_standardized_name_probable. I've got overlapped-lists enabled. If I rename them to kebab-case, I get a deserialization error. I'm at a loss here and am not really sure how to figure it out, so I was hoping someone might be able to point out something obvious I'm doing wrong here.
Thank you in advance!
What's the error you get when using kebab-case?