Convert generic class into XML string of specific structure
Take a look at  How to: Specify an Alternate Element Name for an XML Stream. 
Although it is more code, I would use the mentioned XmlAttributeOverrides like so

public static string GetXml&lt;T&gt;(T instance, string sourceName = "InnerObject") where T : class
{
    var wrapper = new DocumentElement&lt;T&gt;(instance);
    var writer = new StringWriter();
    var overrides = CreateOverrides(typeof(DocumentElement&lt;T&gt;), instance.GetType().Name, sourceName);

    var serializer = new XmlSerializer(typeof(DocumentElement&lt;T&gt;), overrides);
    serializer.Serialize(writer, wrapper);
    return writer.ToString();
}
private static XmlAttributeOverrides CreateOverrides(Type type, string destinationName, string sourceName)
{
    var elementAttribute = new XmlElementAttribute() { ElementName = destinationName };
    var attributes = new XmlAttributes();
    attributes.XmlElements.Add(elementAttribute);
    var overrides = new XmlAttributeOverrides();
    overrides.Add(type, sourceName, attributes);
    return overrides;
}