code: def write_to(self, stream):
          
          if self.data is None:
              raise ValueError("Events must have at least the data field set to be written to XML.")
  
          event = ET.Element("event")
          if self.stanza is not None:
              event.set("stanza", self.stanza)
          event.set("unbroken", str(int(self.unbroken)))
  
          # if a time isn't set, let Splunk guess by not creating a <time> element
          if self.time is not None:
              ET.SubElement(event, "time").text = str(self.time)
  
          # add all other subelements to this Event, represented by (tag, text)
          subelements = [
              ("source", self.source),
              ("sourcetype", self.sourceType),
              ("index", self.index),
              ("host", self.host),
              ("data", self.data)
          ]
          for node, value in subelements:
              if value is not None:
                  ET.SubElement(event, node).text = value
  
          if self.done:
              ET.SubElement(event, "done")
  
          stream.write(ET.tostring(event))
          stream.flush()
docs: Write an XML representation of self, an ``Event`` object, to the given stream.
  
          The ``Event`` object will only be written if its data field is defined,
          otherwise a ``ValueError`` is raised.
  
          :param stream: stream to write XML to.