terça-feira, 5 de junho de 2018

Conversor XML em TXT

A RPI está iniciando nesta terça feira dia 05/06/2018 na RPI 2464 a disponibilizar o formato XML.

A previsão é que a partir de 2019 seja disponibilizado apenas o formato XML
http://www.inpi.gov.br/comunicados/arquivos-no-formato-txt-passarao-para-xml-na-rpi

A seguir eu disponibilizo um código em PHP que desenvolvi para converter o arquivo XML atual em TXT, desta maneira você pode recuperar a RPI em TXT e continuar usando seus sistemas sem qualquer necessidade de reprogramar o código de leitura da revista.

  $fname="P$rpi.TXT";
  @$fp = fopen($fname,"w");
  if (!$fp)
  {
   echo "Não foi identificado o arquivo texto $fname";
   exit();
  }
  $data2 = substr($data,8,2).'/'.substr($data,5,2).'/'.substr($data,0,4);
  $msg = "No $rpi de $data2";
  echo "$msg<BR>";
  fputs($fp,$msg."\n");

  $saveFileName = "revistas/Patente_$rpi.xml";
  $data2 = substr($data,8,2).'/'.substr($data,5,2).'/'.substr($data,0,4);

  $myprocessos= array();
  $filename = $saveFileName;
  if(file_exists($filename)) {

      $doc = new DOMDocument('1.0', 'utf-8');
      $xmlfile = file_get_contents($filename);
      $doc->loadXML($xmlfile);
   $xpath = new DOMXPath($doc);
   $n = 0;
   $entry = $xpath->query("//revista/despacho");

   foreach($entry as $ent){
    $n++;
       //fputs($fp,"\n");

    foreach($ent->childNodes as $nodename_main)
    {

     if($nodename_main->nodeName=='codigo')
     {
      $inid = 'Cd';
      $codigo_main = utf8_decode(trim($nodename_main->nodeValue));
      if ($codigo_main>=100 and $codigo_main<=140) $codigo_main = 'PR - Recursos';
      if ($codigo_main>=200 and $codigo_main<=218) $codigo_main = 'PR - Nulidades';
      $myprocessos[$n][$inid]=$codigo_main;
      if ($codigo_main=='PR - Recursos' or $codigo_main=='PR - Nulidades') $myprocessos[$n]['Di']='DIRPA';
     }

     if($nodename_main->nodeName=='processo-patente')
     {
      foreach($nodename_main->childNodes as $nodename)
      {
       if($nodename->nodeName=='numero')
       {
        //$inid = 11;
        $inid = $nodename->getAttribute('inid');
        $numero = trim($nodename->nodeValue);
        $kindcode = $nodename->getAttribute('kindcode');
        $myprocessos[$n][$inid]=$numero.' '.$kindcode;
       }

       if($nodename->nodeName=='data-deposito')
       {
        //$inid = 22;
        $inid = $nodename->getAttribute('inid');
        $data_deposito = trim($nodename->nodeValue);
        //$data_deposito = substr($data_deposito,8,2).'/'.substr($data_deposito,5,2).'/'.substr($data_deposito,0,4);
        $myprocessos[$n][$inid]=$data_deposito;
       }

       if($nodename->nodeName=='concessao')
       {
        //$inid = 45;
        $inid = $nodename->getAttribute('inid');
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='data')
         {
          $concessao = trim($subNodes->nodeValue);
          //$concessao = substr($concessao,8,2).'/'.substr($concessao,5,2).'/'.substr($concessao,0,4);
          $myprocessos[$n][$inid]=$concessao;
         }
        }
       }

       if($nodename->nodeName=='publicacao-nacional')
       {
        //$inid = 44;
        $inid = $nodename->getAttribute('inid');
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='data-rpi')
         {
          $data_rpi = trim($subNodes->nodeValue);
          //$data_rpi = substr($data_rpi,8,2).'/'.substr($data_rpi,5,2).'/'.substr($data_rpi,0,4);
          $myprocessos[$n][$inid]=$data_rpi;
         }
        }
       }

       if($nodename->nodeName=='pedido-principal')
       {
        //$inid = 61;
        $inid = $nodename->getAttribute('inid');
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='numero')
         {
          $numero = trim($subNodes->nodeValue);
         }
         if($subNodes->nodeName=='data-deposito')
         {
          $data_deposito = trim($subNodes->nodeValue);
          //$data_deposito = substr($data_deposito,8,2).'/'.substr($data_deposito,5,2).'/'.substr($data_deposito,0,4);
         }
         $myprocessos[$n][$inid]=$numero.' '.$data_deposito;
        }
       }

       if($nodename->nodeName=='data-fase-nacional')
       {
        //$inid = 85;
        $inid = $nodename->getAttribute('inid');
        $data = trim($nodename->nodeValue);
        //$data = substr($data,8,2).'/'.substr($data,5,2).'/'.substr($data,0,4);
        $myprocessos[$n][$inid]=$data;
       }


       if($nodename->nodeName=='pedido-internacional')
       {
        //$inid = 86;
        $inid = $nodename->getAttribute('inid');
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='numero-pct')
         {
          $numero_pct = trim($subNodes->nodeValue);
         }
         if($subNodes->nodeName=='data-pct')
         {
          $data_pct = trim($subNodes->nodeValue);
          //$data_pct = substr($data_pct,8,2).'/'.substr($data_pct,5,2).'/'.substr($data_pct,0,4);
         }
         $myprocessos[$n][$inid]="$numero_pct de $data_pct";
        }
       }

       if($nodename->nodeName=='publicacao-internacional')
       {
        //$inid = 87;
        $inid = $nodename->getAttribute('inid');
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='numero-ompi')
         {
          $numero_ompi = trim($subNodes->nodeValue);
         }
         if($subNodes->nodeName=='data-ompi')
         {
          $data_ompi = trim($subNodes->nodeValue);
          //$data_ompi = substr($data_ompi,8,2).'/'.substr($data_ompi,5,2).'/'.substr($data_ompi,0,4);
         }
         $myprocessos[$n][$inid]="$numero_ompi de $data_ompi";
        }
       }

       if($nodename->nodeName=='resumo')
       {
        //$inid = 57;
        $inid = $nodename->getAttribute('inid');
        $resumo = utf8_decode(trim($nodename->nodeValue));
        $myprocessos[$n][$inid]=$resumo;
       }


       if($nodename->nodeName=='classificacao-internacional-lista')
       {
        $i=0;
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='classificacao-internacional')
         {
          //$inid = 51;
          $inid = $subNodes->getAttribute('inid');
          $sequencia = $subNodes->getAttribute('sequencia');
          $ano = $subNodes->getAttribute('ano');
          $codigo_subNodes = trim($subNodes->nodeValue);
          if ($i++==0)
           $myprocessos[$n][$inid]=$codigo_subNodes." "."($ano)";
          else
           $myprocessos[$n][$inid]=$myprocessos[$n][$inid].", ".$codigo_subNodes.' '."($ano)";
         }
        }
       }


       //if($nodename->nodeName=='classificacao-CPC-lista')
       if($nodename->nodeName=='classificacao-nacional-lista')
       {
        $i=0;
        foreach($nodename->childNodes as $subNodes)
        {
         //if($subNodes->nodeName=='classificacao-CPC')
         if($subNodes->nodeName=='classificacao-nacional')
         {
          //$inid = 52;
          $inid = $subNodes->getAttribute('inid');
          $sequencia = $subNodes->getAttribute('sequencia');
          $classificacao_cpc = trim($subNodes->nodeValue);
          if ($i++==0)
           $myprocessos[$n][$inid]=$classificacao_cpc;
          else
           $myprocessos[$n][$inid]=$myprocessos[$n][$inid].' , '.$classificacao_cpc;
         }
        }
       }


       if($nodename->nodeName=='prioridade-unionista-lista')
       {
        $i=0;
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='prioridade-unionista')
         {
          //$inid = 30;
          $inid = $subNodes->getAttribute('inid');
          $sequencia = $subNodes->getAttribute('sequencia');
          foreach($subNodes->childNodes as $subNodes2)
          {
           if($subNodes2->nodeName=='sigla-pais')
           {
            $sigla_pais = trim($subNodes2->nodeValue);
           }
           if($subNodes2->nodeName=='numero-prioridade')
           {
            $numero_prioridade = trim($subNodes2->nodeValue);
           }
           if($subNodes2->nodeName=='data-prioridade')
           {
            $data_prioridade = trim($subNodes2->nodeValue);
            //$data_prioridade = substr($data_prioridade,8,2).'/'.substr($data_prioridade,5,2).'/'.substr($data_prioridade,0,4);
           }
          }
          if ($i++==0)
           $myprocessos[$n][$inid]=$data_prioridade.' '.$sigla_pais.' '.$numero_prioridade;
          else
           $myprocessos[$n][$inid]=$myprocessos[$n][$inid].'; '.$data_prioridade.' '.$sigla_pais.' '.$numero_prioridade;
         }

        }
       }


       if($nodename->nodeName=='prioridade-interna-lista')
       {
        $i=0;
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='prioridade-interna')
         {
          //$inid = 66;
          $inid = $subNodes->getAttribute('inid');
          $sequencia = $subNodes->getAttribute('sequencia');
          foreach($subNodes->childNodes as $subNodes2)
          {
           if($subNodes2->nodeName=='data-prioridade')
           {
            $data_prioridade = trim($subNodes2->nodeValue);
            //$data_prioridade = substr($data_prioridade,8,2).'/'.substr($data_prioridade,5,2).'/'.substr($data_prioridade,0,4);
           }
           if($subNodes2->nodeName=='numero-prioridade')
           {
            $numero_prioridade = trim($subNodes2->nodeValue);
           }

          }
          if ($i++==0)
           $myprocessos[$n][$inid]="$numero_prioridade $data_prioridade";
          else
           $myprocessos[$n][$inid]=$myprocessos[$n][$inid].'; '."$numero_prioridade $data_prioridade";
         }
        }
       }


       if($nodename->nodeName=='divisao-pedido')
       {
        //$inid = 62;
        $inid = $nodename->getAttribute('inid');
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='numero')
         {
          $numero = trim($subNodes->nodeValue);
         }
         if($subNodes->nodeName=='data-deposito')
         {
          $data_deposito = trim($subNodes->nodeValue);
          //$data_deposito = substr($data_deposito,8,2).'/'.substr($data_deposito,5,2).'/'.substr($data_deposito,0,4);
         }

         $myprocessos[$n][$inid]=$numero.' '.$data_deposito;
        }
       }

       if($nodename->nodeName=='titulo')
       {
        //$inid = 54;
        $inid = $nodename->getAttribute('inid');
        $titulo = utf8_decode(trim($nodename->nodeValue));
        $myprocessos[$n][$inid]=$titulo;
       }


       if($nodename->nodeName=='titular-lista')
       {
        $i=0;
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='titular')
         {
          //$inid = 71;
          $inid = $subNodes->getAttribute('inid');
          $sequencia = $subNodes->getAttribute('sequencia');
          foreach($subNodes->childNodes as $subNodes2)
          {
           if($subNodes2->nodeName=='nome-completo')
           {
            $nome_completo = utf8_decode(trim($subNodes2->nodeValue));
           }
           $uf='';
           if($subNodes2->nodeName=='endereco')
           {
            foreach($subNodes2->childNodes as $subNodes3)
            {
             if($subNodes3->nodeName=='uf')
             {
              $uf = '/'.trim($subNodes3->nodeValue);
             }
             if($subNodes3->nodeName=='pais')
             {
              $siglaPais = trim($subNodes3->nodeValue);
             }
            }

            if ($i++==0)
             $myprocessos[$n][$inid]=trim($nome_completo." "."($siglaPais$uf)");
            else
             $myprocessos[$n][$inid]=$myprocessos[$n][$inid].", ".trim($nome_completo.' '."($siglaPais$uf)");
           }
          }
         }
        }
       }


       if($nodename->nodeName=='inventor-lista')
       {
        $i=0;
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='inventor')
         {
          //$inid = 72;
          $inid = $subNodes->getAttribute('inid');
          $sequencia = $subNodes->getAttribute('sequencia');
          foreach($subNodes->childNodes as $subNodes2)
          {
           if($subNodes2->nodeName=='nome-completo')
           {
            $nome_completo = utf8_decode(trim($subNodes2->nodeValue));
           }
          }

          if ($i++==0)
           $myprocessos[$n][$inid]=$nome_completo;
          else
           $myprocessos[$n][$inid]=$myprocessos[$n][$inid].'; '.$nome_completo;
         }
        }
       }


       if($nodename->nodeName=='procurador-lista')
       {
        $i=0;
        foreach($nodename->childNodes as $subNodes)
        {
         if($subNodes->nodeName=='procurador')
         {
          //$inid = 74;
          $inid = $subNodes->getAttribute('inid');
          $sequencia = $subNodes->getAttribute('sequencia');
          foreach($subNodes->childNodes as $subNodes2)
          {
           if($subNodes2->nodeName=='nome-completo')
           {
            $nome_completo = utf8_decode(trim($subNodes2->nodeValue));
           }
          }

          if ($i++==0)
           $myprocessos[$n][$inid]=$nome_completo;
          else
           $myprocessos[$n][$inid]=$myprocessos[$n][$inid].', '.$nome_completo;
         }
        }
       }
      }
     }

     if($nodename_main->nodeName=='comentario')
     {
      //$inid = 'Co';
      $inid = $nodename_main->getAttribute('inid');
      $comentario = utf8_decode(trim($nodename_main->nodeValue));
      $myprocessos[$n][$inid]=$comentario;
      //$myprocessos[$n]['De']=$decisao;
     }

     if($nodename_main->nodeName=='titulo')
     {
      $inid = 'De';
      $decisao = utf8_decode(trim($nodename_main->nodeValue));
      //$myprocessos[$n][$inid]=$decisao;
     }
    }

    //print_r($myprocessos[$n]);
    ksort($myprocessos[$n]);
    $msg_ultimo = '';
    foreach ($myprocessos[$n] as $key=>$value)
    {
     $msg = "($key) $value";
     if ($key=='co' or $key=='De')
      $msg_ultimo = $msg;
     else
     {
      echo "$msg<BR>";
      fputs($fp,$msg."\n");
     }
    }
    if ($msg_ultimo<>'')
    {
      echo "$msg_ultimo<BR>";
      fputs($fp,$msg_ultimo."\n");
    }
    echo "<BR><BR><BR>";
   }

  }
  fclose($fp);
  echo "Fim de processamento";
  exit();

Nenhum comentário:

Postar um comentário