diff --git a/channel.c b/channel.c
index 850bcb4a1..bf0928b63 100644
--- a/channel.c
+++ b/channel.c
@@ -170,12 +170,23 @@ void iio_channel_init_finalize(struct iio_channel *chn)
static ssize_t iio_snprintf_chan_attr_xml(char *str, ssize_t len,
struct iio_channel_attr *attr)
{
+ ssize_t ret, alen = 0;
+
if (!attr->filename)
return iio_snprintf(str, len, "", attr->name);
- return iio_snprintf(str, len,
- "",
- attr->name, attr->filename);
+ ret = iio_snprintf(str, len, "name);
+ if (ret < 0)
+ return ret;
+
+ iio_update_xml_indexes(ret, &str, &len, &alen);
+
+ ret = iio_xml_print_and_sanitized_param(str, len, "filename=\"",
+ attr->filename, "\" />");
+ if (ret < 0)
+ return ret;
+
+ return alen + ret;
}
static ssize_t iio_snprintf_scan_element_xml(char *str, ssize_t len,
@@ -204,7 +215,9 @@ ssize_t iio_snprintf_channel_xml(char *ptr, ssize_t len,
ssize_t ret, alen = 0;
unsigned int i;
- ret = iio_snprintf(ptr, len, "id);
+
+ ret = iio_xml_print_and_sanitized_param(ptr, len, "id, "\"");
if (ret < 0)
return ret;
iio_update_xml_indexes(ret, &ptr, &len, &alen);