HRVP Ответов: 1

Как создать xelement для этого XML?


Это мой запрос xml. Мне нужно преобразовать XElement в C#.

<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservices.bit.com" xmlns:ter="http://tp.requests.objects.webservice.cc.bit.com">
   <soapenv:header>
      <web:authenticationtoken>
         <web:key>rgg3
         <web:password>testenv
         <web:user>test@gmail.com
      
   
   <soapenv:body>
      <web:getsbyzip>
         <web:getsbyzipcoderequest>
            <ter:arraygetbyzipcode>
               <!--Zero or more repetitions:-->
               <ter:getbyzipcode>
                  <ter:servicelevel>KK
                  <ter:servicewing>Takal
               
                <ter:getbyzipcode>
                  <ter:servicelevel>KK
                  <ter:servicewing>Takal


Что я уже пробовал:

public XElement GetRequestXml(GetModel getModel)
        {
            XNamespace web = "http://webservices.bit.com";
            XNamespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
            XNamespace ter = "http://tp.requests.objects.webservice.cc.bit.com";
            XElement requestXml = new XElement(soapenv + "Envelope",
                new XElement(soapenv + "Header",
               new XElement(web + "AuthenticationToken",
               new XAttribute(web + "key", "rgg3"),
               new XAttribute(web + "password", "testenv"),
                new XAttribute(web + "user", "test@gmail.com"))),

                new XElement(soapenv + "Body",
                 new XElement(web + "GetByZioCode",
                new XElement(web + "GetByZipCodeRequest",
                new XElement(ter + "arrayTerminalByZipCode",
               new XElement(ter + "TerminalByZipCode",
               new XAttribute(ter + "serviceLevel", getModel.serviceLevel),
			   new XAttribute(ter + "servicewing", getModel.servicewing)              
               new XElement(ter + "TerminalByZipCode",
               new XAttribute(ter + "serviceLevel", getModel.serviceLevel),
			   new XAttribute(ter + "servicewing", getModel.servicewing),
           
              ))));

            return requestXml;
        }


Я попробовал вышеприведенный код. если это поможет. заранее спасибо.

Patrice T

в чем заключается вопрос/проблема?

Richard Deeming

Ваш пример XML является недопустимым. Некоторые имена в вашем коде C# не совпадают с именами в Примере XML. И ваш код C# использует атрибуты там, где ваш пример XML содержит элементы.