На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> работа с TXMLDocument
    Интересует работа с TXMLDocument. Конкретно нужно чтение и запись новых элементов.
      неужели тут никто с TXMLDocument не работал?
        запись
        ExpandedWrap disabled
          xmlRequest->XML->Clear();
          xmlRequest->Active = true;
          xmlRequest->Version = "1.0";
          xmlRequest->Encoding = "utf-8";
           
          _di_IXMLNode request = xmlRequest->Node->AddChild( "request" );
           
          _di_IXMLNode child = request->AddChild( "protocol-version" );
          child->SetText( "blablabla" );
          child = request->AddChild( "extra" );
          child->SetAttribute( "name", WideString( "client-software" ) );



        чтение
        ExpandedWrap disabled
                  xmlResponse->Active = false;
                  xmlResponse->XML->Text = Получить документ
                  xmlResponse->Active = true;
          _di_IXMLNode request = xmlResponse->ChildNodes->FindNode( WideString( "response" ) );
            if( response->GetNodeName() == WideString( "response" ) )
            {
              _di_IXMLNode result_code = response->GetChildNodes()->FindNode( WideString( "result-code" ) );
              if( !result_code->GetAttribute( "fatal" ).IsNull() && WideString( result_code->GetAttribute( "fatal" ) ) == WideString( "true" ) )
              {
                /**
                 * <response>
                 *    <result-code fatal="true">150</result-code>
                 * </response>
                 *
                 * -------------------------------------------------------------------- *
                 * -- fatal server error response to do:
                 */
                return StrToInt( result_code->GetText() );
              } else
              {
                /**
                 * <?xml version="1.0" encoding="windows-1251"?>
                 * <response>
                 *        <protocol-version>3.00</protocol-version>
                 *        <response-codes>
                 *                <response-code id="0">OK</response-code>
                 *        <response-code id="1">Провайдер временно недоступен</response-code>
                 *                .
                 *        .
                 *        .
                 *        <response-code id="300">Другая (неизвестная) ошибка провайдера</response-code>
                 *    </response-codes>
                  * </response>
                 *
                 * -------------------------------------------------------------------- *
                 * -- success response to do:
                 */
                _di_IXMLNode response_codes = response->GetChildNodes()->FindNode( WideString( "response-codes" ) );
                if( response_codes.operator ->() )
                {
                  int  count = response_codes->GetChildNodes()->GetCount();
                  for( int  i=0;i<count;i++ )
                  {
                    codes->insert(
                          StrToInt( response_codes->GetChildNodes()->Get( i )->GetAttribute( "id" ) ),
                          AnsiString( response_codes->GetChildNodes()->Get( i )->GetText() ).c_str()
                    );
                  }
           
                }
                return StrToInt( result_code->GetText() );
              }
            }


        в общем, как то так.
          спасибо
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0578 ]   [ 15 queries used ]   [ Generated: 15.06.25, 13:17 GMT ]