diff --git a/api/funkwhale_api/subsonic/renderers.py b/api/funkwhale_api/subsonic/renderers.py
index e4b6470511378bbff21d824896a4210dd84c6c43..527b3fa1e2e9274c8041cbbd6c74e8741a55d261 100644
--- a/api/funkwhale_api/subsonic/renderers.py
+++ b/api/funkwhale_api/subsonic/renderers.py
@@ -53,5 +53,8 @@ def dict_to_xml_tree(root_tag, d, parent=None):
             for obj in value:
                 root.append(dict_to_xml_tree(key, obj, parent=root))
         else:
-            root.set(key, str(value))
+            if key == "value":
+                root.text = str(value)
+            else:
+                root.set(key, str(value))
     return root
diff --git a/api/tests/subsonic/test_renderers.py b/api/tests/subsonic/test_renderers.py
index acd5500e665b6d4f9d32c0ea6cd9689a9bb37421..501ae48ce559277baf5b378b41c042d7241ea9a3 100644
--- a/api/tests/subsonic/test_renderers.py
+++ b/api/tests/subsonic/test_renderers.py
@@ -67,9 +67,12 @@ def test_json_renderer():
 
 
 def test_xml_renderer_dict_to_xml():
-    payload = {"hello": "world", "item": [{"this": 1}, {"some": "node"}]}
+    payload = {
+        "hello": "world",
+        "item": [{"this": 1, "value": "text"}, {"some": "node"}],
+    }
     expected = """<?xml version="1.0" encoding="UTF-8"?>
-<key hello="world"><item this="1" /><item some="node" /></key>"""
+<key hello="world"><item this="1">text</item><item some="node" /></key>"""
     result = renderers.dict_to_xml_tree("key", payload)
     exp = ET.fromstring(expected)
     assert ET.tostring(result) == ET.tostring(exp)