mapToXml static method
XmlElement
mapToXml(
- String tag,
- dynamic data
)
Implementation
static XmlElement mapToXml(String tag, dynamic data) {
final element = XmlElement(XmlName(tag));
if (data is! Map<String, dynamic>) {
element.innerText = data.toString();
return element;
}
Map<String, String> attributes = {};
List<XmlNode> children = [];
for (final entry in data.entries) {
final String key = entry.key;
final dynamic value = entry.value;
if (key.startsWith('@')) {
final attrName = key.substring(1);
attributes[attrName] = value.toString();
} else if (value is Map<String, dynamic>) {
children.add(mapToXml(key, value));
} else if (value is List) {
for (final item in value) {
children.add(mapToXml(key, item));
}
} else {
final child = XmlElement(XmlName(key));
child.innerText = value.toString();
children.add(child);
}
}
element.attributes.addAll(
attributes.entries.map((e) => XmlAttribute(XmlName(e.key), e.value)),
);
element.children.addAll(children);
return element;
}