Serialisieren Sie XmlDocument und senden Sie es über HTTPWebRequest

Ich versuche herauszufinden, wie ich mein XmlDocument richtig serialisieren und über ein HTTPWebRequest-Objekt senden kann.

Folgendes habe ich bisher:

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();

Ein paar Dinge, über die ich mir nicht sicher bin. Ich habe 2 XmlDocuments, die ich in der gleichen HTTPWebRequest senden muss. Ich habe zuvor versucht, die XmlDocuments in Strings zu konvertieren und sie einfach zu verketten (um den String zu senden), aber als ich den StringBuilder / Writer verwendet habe, fügt er hinzu:

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

Ich habe die Deklaration bereits in meinen XmlDocument-Objekten, also ist sie jetzt zweimal dort, und ich kann die Deklaration nicht haben<string... Teil da drin. Ist es einfacher, die XmlDocuments in Zeichenfolgen zu konvertieren, sie dann zu verketten und zu senden, oder gibt es eine einfache Möglichkeit, die XmlDocuments so zu senden, wie sie sind?

Bearbeiten:

SehenC # XmlDocument-Knoten Wenn ich versuche, eines meiner XmlDocuments in eine Zeichenfolge zu konvertieren, wird es als angezeigt

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

Ich möchte, dass meine Wurzel ist<TrackRequest>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage