Заменить префикс пространства имен и закрывающий тег из сериализованного запроса мыла? - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь сериализовать запрос soapui и использовать его вручную в программе soapui (запрос). PD: Я только что нашел этот простой способ получить этот запрос максимально похожим на формат запроса мыла. Запрос от мыла примерно такой:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://asdasd.com/contract/businessdomain/BillPaymentsAndReceivablesManagement/ManageCustomerPayments/v1-0" xmlns:v3="http://asdasd.com/schema/util/commondatatypes/v3-0" xmlns:v31="http://asdasd.com/schema/businessdomain/common/v3-0" xmlns:v32="http://asdasd.com/schema/businessdomain/customer/v3-0">
   <soapenv:Header/>
   <soapenv:Body>
      <v1:CustomerOrderPaymentRequest>
         <v1:RequestMetadata>
            <v3:requestID>?</v3:requestID>
            <v3:systemID>?</v3:systemID>
            <!--Optional:-->
            <v3:sourceID>?</v3:sourceID>
            <!--Optional:-->
            <v3:userID>?</v3:userID>
         </v1:RequestMetadata>
   </soapenv:Body>
</soapenv:Envelope>

Сериализованный объект выглядит так:

<?xml version="1.0" encoding="utf-16"?>
<CustomerOrderPaymentRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <RequestMetadata xmlns="http://asdasd.com/contract/businessdomain/BillPaymentsAndReceivablesManagement/ManageCustomerPayments/v1-0">
    <requestID xmlns="http://asdasd.com/schema/util/commondatatypes/v3-0">123123</requestID>
    <systemID xmlns="http://asdasd.com/schema/util/commondatatypes/v3-0">QWEQWE</systemID>
    <sourceID xmlns="http://asdasd.com/schema/util/commondatatypes/v3-0">ZXCZXC</sourceID>
    <userID xmlns="http://asdasd.com/schema/util/commondatatypes/v3-0">ASDASD</userID>
  </RequestMetadata>
</CustomerOrderPaymentRequest>

Я использую это для сериализации запроса мыла:

        var serxml = new System.Xml.Serialization.XmlSerializer(rst.GetType());
        var ms = new MemoryStream();
        serxml.Serialize(ms, rst);
        string xml = Encoding.UTF8.GetString(ms.ToArray());

Я могу просто заменить этот xmlns: v32 = "http://asdasd.com/schema/businessdomain/customer/v3-0" на этот v: 32 в открывающем теге, но как насчет конечного тега, поскольку он также должен быть помещен в закрывающий тег? Мне не хватает более простого способа получить запрос на мыло?

...