diff --git a/crates/xml/derive/src/xml_struct.rs b/crates/xml/derive/src/xml_struct.rs
index ba714c4..37309b8 100644
--- a/crates/xml/derive/src/xml_struct.rs
+++ b/crates/xml/derive/src/xml_struct.rs
@@ -196,10 +196,11 @@ impl NamedStruct {
.filter(|field| field.attrs.xml_ty == FieldType::Attr)
.map(|field| {
let field_name = field.xml_name();
+ let field_ident = field.field_ident();
quote! {
::quick_xml::events::attributes::Attribute {
key: ::quick_xml::name::QName(#field_name),
- value: b"hello".into()
+ value: ::std::borrow::Cow::from(::rustical_xml::Value::serialize(&self.#field_ident).into_bytes())
}
}
});
diff --git a/crates/xml/tests/se_struct.rs b/crates/xml/tests/se_struct.rs
index 78f2b67..e7b53e1 100644
--- a/crates/xml/tests/se_struct.rs
+++ b/crates/xml/tests/se_struct.rs
@@ -63,17 +63,19 @@ fn test_struct_value_tagged() {
#[xml(root = b"document")]
struct Document {
href: String,
+ num: usize,
}
let mut buf = Vec::new();
let mut writer = quick_xml::Writer::new(&mut buf);
Document {
href: "okay".to_owned(),
+ num: 123,
}
.serialize_root(&mut writer)
.unwrap();
let out = String::from_utf8(buf).unwrap();
- assert_eq!(out, "okay");
+ assert_eq!(out, "okay123");
}
#[test]
@@ -88,10 +90,10 @@ fn test_struct_value_untagged() {
let mut buf = Vec::new();
let mut writer = quick_xml::Writer::new(&mut buf);
Document {
- href: "okay".to_owned(),
+ href: "okays".to_owned(),
}
.serialize_root(&mut writer)
.unwrap();
let out = String::from_utf8(buf).unwrap();
- assert_eq!(out, "okay");
+ assert_eq!(out, "okays");
}