toMap static method
Takes an XmlElement and creates a map from the attributes and any children elements
Implementation
// TODO: Further describe this
static Map<dynamic, dynamic> toMap({required XmlElement node}) {
Map<dynamic, dynamic> map = <dynamic, dynamic>{};
try {
//////////////////
/* Remember Xml */
//////////////////
map["xml"] = node.toXmlString();
////////////////
/* Attributes */
////////////////
List<XmlAttribute> attributes = node.attributes;
for (XmlAttribute attribute in attributes) {
String value = attribute.value.trim();
String name = attribute.name.toString();
map[name] = value;
}
//////////////
/* Elements */
//////////////
List<XmlNode> children = node.children;
for (XmlNode child in children) {
if (child is XmlElement) {
XmlElement e = child;
String? value = e.value?.trim();
String name = e.name.toString();
map[name] = hasChildElements(child)
? child.outerXml.toString().trim()
: value;
} else if (child is XmlText) {
XmlText e = child;
String value = e.value.trim();
String name = node.localName;
map[name] = value;
} else if (child is XmlCDATA) {
XmlCDATA e = child;
String value = e.innerText.trim();
String name = node.localName;
map[name] = value;
}
}
} catch (e) {
Log().exception(e,
caller: 'xml.dart => Map<dynamic,dynamic> toMap({XmlElement node})');
}
return map;
}