Я пытаюсь выяснить, как правильно сериализовать мой XmlDocument и отправить его через объект HTTPWebRequest.
Вот что у меня есть:
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();
Несколько вещей, в которых я не уверен. У меня есть 2 XmlDocuments, которые мне нужно отправить в том же HTTPWebRequest. Ранее я пытался преобразовать XmlDocuments в строки и просто объединить их (для отправки строки), но когда я использовал StringBuilder / Writer, он добавляет:
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://myNameSpace/">
У меня уже есть объявление в моих объектах XmlDocument, так что теперь оно там дважды, и у меня не может быть там части <string...
. Проще ли конвертировать XmlDocuments в строки, затем объединять их и отправлять, или есть простой способ отправить XmlDocuments как есть?
Изменить:
См. C # XmlDocument Nodes
Когда я пытаюсь преобразовать один из моих XmlDocuments в строку, он отображается как
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://myNamespace/">
<TrackRequest>
<Request>
<TransactionReference>
<CustomerContext>whatever</CustomerContext>
</TransactionReference>
</Request>
<TrackingNumber>123</TrackingNumber>
</TrackRequest>
</string>
Я хочу, чтобы мой корень был <TrackRequest>