From 22ed278dbb5dd6cbaf527b9f79dae4a75e23f452 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Wed, 4 Jun 2025 20:12:47 +0200 Subject: [PATCH] TagList: Correctly write namespace --- crates/dav/src/xml/tag_list.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/crates/dav/src/xml/tag_list.rs b/crates/dav/src/xml/tag_list.rs index 3df9d43..0d07827 100644 --- a/crates/dav/src/xml/tag_list.rs +++ b/crates/dav/src/xml/tag_list.rs @@ -1,8 +1,5 @@ use derive_more::derive::From; -use quick_xml::{ - events::{BytesStart, Event}, - name::Namespace, -}; +use quick_xml::name::Namespace; use rustical_xml::{NamespaceOwned, XmlSerialize}; use std::collections::HashMap; @@ -12,13 +9,17 @@ pub struct TagList(Vec<(Option, String)>); impl XmlSerialize for TagList { fn serialize( &self, - ns: Option, - tag: Option<&[u8]>, - namespaces: &HashMap, + _ns: Option, + _tag: Option<&[u8]>, + _namespaces: &HashMap, writer: &mut quick_xml::Writer, ) -> std::io::Result<()> { - for (_ns, tag) in &self.0 { - writer.write_event(Event::Empty(BytesStart::new(tag)))?; + for (ns, tag) in &self.0 { + let mut el = writer.create_element(tag); + if let Some(ns) = ns { + el = el.with_attribute(("xmlns", String::from_utf8_lossy(&ns.0))); + } + el.write_empty()?; } Ok(()) }