deserialize method

  1. @override
void deserialize(
  1. XmlElement? xml
)
override

Deserializes the FML template elements, attributes and children

Implementation

@override
void deserialize(XmlElement? xml)
{
  if (xml == null) return;

  // deserialize
  super.deserialize(xml);

  // Label
  String? label = Xml.attribute(node: xml, tag: 'label');
  if (label == null)
  {
    XmlElement? node = Xml.getElement(node: xml, tag: 'label');
    if (node != null)
    {
      if (Xml.hasChildElements(node)) {
        this.label = RowModel.fromXml(this, node);
      } else {
        this.label = TextModel(this, null, value: Xml.getText(node));
      }
    }
  }
  else {
    this.label = TextModel(this, null, value: label);
  }

  // Empty?
  if (this.label == null)
  {
    label = Xml.getText(xml);
    if (label != null) {
      this.label = TextModel(this, null, value: label);
    }
  }

  if (this.label == null && labelValue == null) {
    labelValue = Xml.get(node: xml, tag: 'value');
    this.label = TextModel(this, null, value: labelValue);
  }
  // Value
  String? value = Xml.get(node: xml, tag: 'value');
  if (value == null) {
    this.value = label;
    labelValue = label;
  }
  else {
    this.value = value;
  }
  labelValue = label;

  tags = Xml.get(node: xml, tag: 'tags');
}