code: def parse(stream):
          
  
          definition = ValidationDefinition()
  
          # parse XML from the stream, then get the root node
          root = ET.parse(stream).getroot()
  
          for node in root:
              # lone item node
              if node.tag == "item":
                  # name from item node
                  definition.metadata["name"] = node.get("name")
                  definition.parameters = parse_xml_data(node, "")
              else:
                  # Store anything else in metadata
                  definition.metadata[node.tag] = node.text
  
          return definition
docs: Creates a ``ValidationDefinition`` from a provided stream containing XML.
  
          The XML typically will look like this:
  
          ``<items>``
          ``   <server_host>myHost</server_host>``
          ``     <server_uri>https://127.0.0.1:8089</server_uri>``
          ``     <session_key>123102983109283019283</session_key>``
          ``     <checkpoint_dir>/opt/splunk/var/lib/splunk/modinputs</checkpoint_dir>``
          ``     <item name="myScheme">``
          ``       <param name="param1">value1</param>``
          ``       <param_list name="param2">``
          ``         <value>value2</value>``
          ``         <value>value3</value>``
          ``         <value>value4</value>``
          ``       </param_list>``
          ``     </item>``
          ``</items>``
  
          :param stream: ``Stream`` containing XML to parse.
          :return definition: A ``ValidationDefinition`` object.