David_Wimbley
Мое предложение состояло бы в том, чтобы изучить сериализацию. Для меня это самый простой путь, но вы также можете сделать что-то вроде Linq to XML или использовать XML Writer...но это входит в большой код.
Первое, что нужно сделать, это взять свое мыло/xml, перейти к Xml2CSharp.com | преобразуйте ваши XML-примеры в совместимые классы C# XmlSerializer[^]
и создайте классы, которые представляют ваш конверт soap.
Затем, используя созданные классы, вы можете создавать объекты, представляющие части вашего конверта, и присваивать значения, как и любой другой переменной в коде.
var env = new Envelope();
env.Body = new Body();
env.Body.GetRequest = new GetRequest();
env.Body.GetRequest.AccessKey = new AccessKey();
env.Body.GetRequest.Parameters = new Parameters();
env.Body.GetRequest.Parameters.Param = new List<Param>();
env.Body.GetRequest.ProductID = new ProductID();
env.Body.GetRequest.Scope = new Scope();
env.Body.GetRequest.Xsi = "http://www.w3.org/2001/XMLSchema-instance";
env.Body.GetRequest.Xsd = "http://www.w3.org/2001/XMLSchema";
env.Body.GetRequest.AccessKey.Text = "MXANJVAUCAJASPH1";
env.Body.GetRequest.ProductID.Text = "FIBRE";
env.Body.GetRequest.Scope.Text = "QUALIFY";
env.Body.GetRequest.Parameters.Param.Add(new Param()
{
Id = "DirectoryID",
Text = "LOC100056097744",
Xmlns = ""
});
env.Body.GetRequest.Parameters.Param.Add(new Param()
{
Id = "CVCID",
Text = "AggCVC000000015",
Xmlns = ""
});
var xmlString = string.Empty;
XmlSerializer xmlSerializer = new XmlSerializer(env.GetType());
using(StringWriter textWriter = new StringWriter())
{
xmlSerializer.Serialize(textWriter, env);
xmlString = textWriter.ToString();
}
Console.WriteLine(xmlString);
Я не включаю классы для конверта, так как вы можете получить их с сайта xml2csharp и скопировать/вставить в свое приложение.
Но выше, получает следующий XML-код, когда он сериализуется
<?xml version="1.0" encoding="utf-16"?>
<Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<GetRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AccessKey xmlns="https://wsm.webservice.m2.com.au/schemas/WholesaleServiceManagement.xsd">MXANJVAUCAJASPH1</AccessKey>
<ProductID xmlns="https://wsm.webservice.m2.com.au/schemas/WholesaleServiceManagement.xsd">FIBRE</ProductID>
<Scope xmlns="https://wsm.webservice.m2.com.au/schemas/WholesaleServiceManagement.xsd">QUALIFY</Scope>
<Parameters xmlns="https://wsm.webservice.m2.com.au/schemas/WholesaleServiceManagement.xsd">
<Param id="DirectoryID" xmlns="https://wsm.webservice.m2.com.au/schemas/StandardDataTypes.xsd">LOC100056097744</Param>
<Param id="CVCID" xmlns="https://wsm.webservice.m2.com.au/schemas/StandardDataTypes.xsd">AggCVC000000015</Param>
</Parameters>
</GetRequest>
</Body>
</Envelope>