Serializar XmlDocument y enviar a través de HTTPWebRequest

Estoy intentando descubrir cómo serializar correctamente mi XmlDocument y enviarlo a través de un objeto HTTPWebRequest.

Esto es lo que tengo hasta ahora:

Stream requestStream;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://wwwcie.ups.com/ups.app/xml/Track");
request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postData.Length;
requestStream = request.GetRequestStream();

XmlSerializerNamespaces xsm = new XmlSerializerNamespaces();
xsm.Add("", ""); // remove namespace
XmlSerializer ser = new XmlSerializer(xmlRequest.GetType());
ser.Serialize(requestStream, xmlRequest);

requestStream.Write(postData, 0, postData.Length);
requestStream.Close();

Algunas cosas de las que no estoy seguro. Tengo 2 XmlDocuments que necesito enviar en el mismo HTTPWebRequest. He intentado antes convertir los XmlDocuments en cadenas y simplemente concatenarlos (para enviar la cadena), pero cuando usé el StringBuilder / Writer agrega:

  <?xml version="1.0" encoding="utf-8" ?> 
  <string xmlns="http://myNameSpace/">

Ya tengo la declaración en mis objetos XmlDocument, así que ahora está allí dos veces, y no puedo tener la<string... parte en que hay ¿Es más fácil convertir los XmlDocuments en cadenas, concatenarlos y enviarlos o hay una manera fácil de enviar los XmlDocuments como están?

Editar:

VerC # XmlDocument Nodes Cuando intento convertir uno de mis XmlDocuments en una cadena, se muestra como

  <?xml version="1.0" encoding="utf-8" ?> 
  <string xmlns="http://myNamespace/">
      <TrackRequest>
         <Request>
            <TransactionReference>
                <CustomerContext>whatever</CustomerContext>
            </TransactionReference>
         </Request>
         <TrackingNumber>123</TrackingNumber>
      </TrackRequest>
   </string> 

Quiero que mi raíz sea<TrackRequest>

Respuestas a la pregunta(3)

Su respuesta a la pregunta