code: def _add_field(self, node, field_name, field):
          
          value = field.to_string(field.read_from(self))
          text_value = "" if value is None else value
  
          # Is the field type supposed to serialize the fact that the value is None to XML?
          save_none_as_xml_attr = field.none_to_xml and value is None
          field_attrs = {"none": "true"} if save_none_as_xml_attr else {}
  
          if save_none_as_xml_attr or field.xml_node:
              # Field will be output to XML as an separate element.
              tag = etree.QName(XML_NAMESPACES["option"], field_name)
              elem = etree.SubElement(node, tag, field_attrs)
              if field.xml_node:
                  # Only set the value if forced via xml_node;
                  # in all other cases, the value is None.
                  # Avoids an unnecessary XML end tag.
                  elem.text = text_value
          else:
              # Field will be output to XML as an attribute on the node.
              node.set(field_name, text_value)
docs: Add xml representation of field to node.
  
          Depending on settings, it either stores the value of field
          as an xml attribute or creates a separate child node.