code: def serialize_to_string(
          root_processor,  # type: RootProcessor
          value,  # type: Any
          indent=None  # type: Optional[Text]
  ):
      # type: (...) -> Text
      
      if not _is_valid_root_processor(root_processor):
          raise InvalidRootProcessor('Invalid root processor')
  
      state = _ProcessorState()
      state.push_location(root_processor.element_path)
  
      root = root_processor.serialize(value, state)
  
      state.pop_location()
  
      # Always encode to UTF-8 because element tree does not support other
      # encodings in earlier Python versions. See: https://bugs.python.org/issue1767933
      serialized_value = ET.tostring(root, encoding='utf-8')
  
      # Since element tree does not support pretty printing XML, we use minidom to do the pretty
      # printing
      if indent:
          serialized_value = minidom.parseString(serialized_value).toprettyxml(
              indent=indent, encoding='utf-8'
          )
  
      return serialized_value.decode('utf-8')
docs: Serialize the value to an XML string using the root processor.
  
      :return: The serialized XML string.
  
      See also :func:`declxml.serialize_to_file`