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 && this.labelValue == null) {
    this.labelValue = Xml.get(node: xml, tag: 'value');
    this.label = TextModel(this, null, value: this.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');
}