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"); }