Чтение файлов XML по тегам из url и отправка запроса xml.

5 (2)
  • Развернуть Чтение файлов XML по тегам из url и отправка запроса xml. ( Andrew01  21.11.2014 09:26 )
    4(3)
    Здравствуйте уважаемые.
    Собственно сабж.
    1. Подскажите пожалуйста на примере как прочесть xml файл и определенные данные из этого файла по тегам.
    2. как сформировать запрос xml и получить ответ с сервера.


    >> Ответить
    • Развернуть на примерах ( Sergey V. Mamaev  24.11.2014 05:41 )
      3(2)
      1. собственно класс для работы с xml: Mac\Kviter\txml.mac
      2. отправка запроса и получение ответа от сервера: Mac\ElectronicExchange\smev_send.mac
      >> Ответить
      • Развернуть Спасибо, ( Andrew01  26.11.2014 19:02 )
        5(1)
        про создание и обработку xml понял, все получается, а с отправкой запросов и получением ответа - увы нет.
        Есть что нибудь попроще? или подскажите где в документации глянуть эти моменты?
        >> Ответить
        • Развернуть документация? ( Sergey V. Mamaev  27.11.2014 06:17 )
          5(1)
          а документация-то откуда? это частный макрос..
          там параметры вроде проще некуда:
          _Addr -- URL-адрес запроса
          XmlMsg -- сам текст отсылаемого запроса (не имя файла, а его содержимое)
          fileName/filePath -- используются для формирования пути файла сохранения ответа по запросу

          вот у нас файлы ответов выглядят так: ..\txtfile\response112620140200000077.xml
          >> Ответить
    • Развернуть вот так можно ( yakov  28.11.2014 12:20 )
      5(1)
      k=ActiveX ("Msxml.DOMDocument");
      if(k.LoadXML(XML))
      NodeList = k.selectNodes("account");

      XML - это содержимое xml-файла
      если нужно непосредственно с url, то можно так
      LoadFromXML(ReadTxtFile(url));

      а дальше все стандартные сом-объекты
      "account" - здесь это читаемый тэг xml-файла
      >> Ответить
      • Развернуть формирвоание запроса ( yakov  28.11.2014 12:24 )
        5(1)
        а каким методом хочешь формировать запрос:
        если методом Get, то просто открывай файл, указывая в имени нудный url и передавай в него нужные параметры
        если soap-хочешь передавать, то тут я использовал самописную dlm-ку на c++builder, к-я с этим легко справлялась, моежт есть другие способы не знаю, можно на c# сваять простеньку сборку
        >> Ответить
        • Развернуть есть код ( Andrew01  01.12.2014 08:20 )
          5(1)
          Import 
          xmlRequest = ActiveX("MSXML2.ServerXMLHTTP.6.0",true);
          DomDoc = ActiveX("MSXML.DomDocument");
          DomDoc.async = false;
          
          server = "https://nnn.com/api-xml?xmlstring=";
          
          key = "123456789";
          
          Request = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>"+                
                    "<request cmd=\"RENT_REQ_ACCOUNT\">" +                              
                    "<key>"+key+"</key>"+                                               
                    "<company_id>over</company_id>"+                         
                    "<account>000008</account>"+                                        
                    "<fin_period><month>10</month><year>2014</year></fin_period>"+      
                    "<partner_tid>111111111</partner_tid>"+                            
                    "<partner>2223-333-111</partner></request>";
          
          xmlRequest.Open("GET",server + Request,false);
          xmlRequest.setRequestHeader("Content-Type","text/xml; charset=Windows-1251");
          
          DomDoc.Load(xmlRequest.ResponseXML);
          

          а в ответ в одну строку тянуться сообщения.
          Println(DomDoc.DocumentElement.ChildNodes(1).text); //тут все нормально, ответ устраивает
          Println(DomDoc.DocumentElement.ChildNodes(6).text); //а тут все в одну строку идет
          
          ответ
          102014Услуга такая то0.0125.790.00.0125.790.00.000.0125.790.000.000.0125.79








          >> Ответить
        • Развернуть и вот пробую разными методами и разные компоненты подставлять - не получается ( Andrew01  01.12.2014 08:27 )
          5(1)
          иногда вообще вылетает из терминала. Хотя раньше лет 6 назад это все работало, писал другой проект, распарсивал по XML тегам

          типа
          DocXML = DOMDoc.documentElement;
          println(DocXML.ChildNodes(0).Attributes.Item(0).value);
          

          пробую так, вылетает из терминала.
          >> Ответить
          • Развернуть Вопрос закрыт.... ( Andrew01  02.12.2014 11:29 )
            5(1)
            Методами научного тыка и читая англоязычную документацию решил вопрос, что мне поможет GetElementsByTagName(TagName)
             DomXML = xmlRequest.ResponseXML.DocumentElement;
             PrintLn(DomXml.GetElementsByTagName("month").Item(0).Text );
            

            >> Ответить