quarta-feira, 24 de junho de 2009

Lendo um XML apartir de uma String em PHP

Bom, estava a precisar de um código que lesse um XML apartir de uma string vinda de um Webservice. Até ai tudo bem, mas o XML vem com varios nodes e eu queria algo que lesse o XML identificasse cada node e dai faria o que queria com as informações. Primeiro eu encontrei no proprio php.net uma forma de leitura até boa, porém eu teria que colocar pra cada caso seus nodes o que tornaria o código bem extenso, a form foi a seguinte:

$xmlDados = new DOMDocument();
$xmlDados->loadXML($objDadosService->enviarDados());
$flagA = $xmlDados->getElementsByTagName( "node" );
foreach( $flagA as $flag )
{
$codigo = $flag->getElementsByTagName( "codigo" );
$codigo = $codigo->item(0)->nodeValue;

$data_cadastro = $flag->getElementsByTagName( "data_cadastro" );
$data_cadastro = $data_cadastro->item(0)->nodeValue;

$quarto = $flag->getElementsByTagName( "quarto" );
$quarto = $quarto->item(0)->nodeValue;

$cliente = $flag->getElementsByTagName( "cliente" );
$cliente = $cliente->item(0)->nodeValue;

echo "$codigo - $data_cadastro - $quarto - $cliente
";
}
?>

uma boa solução para um xml pequeno, porém o XML que estou a analizar tem varias tag e essas tag podem ser diferentes então fiz a seguinte função:

Parametros:
$xmlDoc: objeto DomDocument, já com XML carregado.
$flag: node que se deseja ler e importar para um array

Retorno:
Um array com os valores daquele node.


function readXML($xmlDoc,$flag = "")
{
$nodeFlag = $xmlDoc->getElementsByTagName( $flag );
if ( $nodeFlag->length )
{
$arrFlag = array();
for ( $k = 0; $k < $nodeFlag->length; $k++)
{
$nodes = $nodeFlag->item(0)->getElementsByTagName( "*" );
for ( $i = 0; $i < $nodes->length; $i++ )
{
$arrFlag[$k][$nodes->item( $i )->nodeName] = $nodes->item( $i )->nodeValue;
}
}
return $arrFlag;
}
else
{
return false;
}

}

# Exemplo: #

$xmlDados = new DOMDocument();
$xmlDados->loadXML("


Fulanofulano@fulano.com.br


Cicranocicrano@fulano.com.br


Beltranobeltrano@fulano.com.br

TeresaPortuguês");

$arrFlags = array();
$arrFlags = readXML($xmlDados,"alunos");



O resultado será um array com os dados dos alunos !

domingo, 21 de junho de 2009

Certificação

To estudando pra tirar minha certificação PHP, não sei se o pesa muito no mercado, mas eu quero tirar mais por mim. Baixei alguns materiais pra estudar e vi que não vai ser facil, eles abordam temas de forma bem complexa e muitas outras coisas que não utilizo muito no meu dia-a-dia, pretendo fazer uns simulados no inicio de Julho e no fim do mês faço a prova !

inté+

Operadores Bit-a-Bit (Bitwise Operators)

Operadores Bit-a-Bit
1. AND
O operador AND é representado por "&". Uma expressão onde é utilizada o operador AND, para ser verdadeira (TRUE) os bits têm ambos de possuir o valor 1. Em caso de um, ou os dois serem 0 a expressão devolve o valor 0. Como qualquer valor multiplicado por 0 é igual a 0, o operador AND é muitas vezes associado à multiplicação.

Tabela da verdade:

0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

Exemplo: $a = $b & $c;
Supondo que $b = 10101011 e $c = 10000111:

$a =
10101011 &
10000111
--------------------
10000011
(...)
$a = 10000011;


2. OR

O operador OR é representado por "|". Uma expressão para ser verdadeira pelo menos um dos bits tem de ser 1, ou seja, só se os dois bits forem igual a 0 é que uma expressão é falsa.

Tabela da verdade:

0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1

Exemplo: $a = $b | $c;
Supondo que $b = 10101011 e $c = 10000111:

$a =
10101011 |
10000111
--------------------
10101111
(...)
$a = 10101111;


3. NOT
O operador NOT é um operador unário e é representado por "~". A operação exercida por este operador é de negação lógica sobre os bits, isto é, torna falso onde é verdadeiro e torna verdadeiro onde é falso.

Tabela da verdade:

NOT 1 = 0
NOT 0 = 1


Exemplo: $a = ~$b;
Supondo que $b = 10101011;

$a = ~(10101011);
(...)
$a = 01010100;


4. XOR
O operador XOR (Ou Exclusivo) é representado por "^". Com este operador, se os bits forem diferentes os bits resultantes são verdadeiros.

Tabela da verdade:

0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0


Exemplo: $a = $b ^ $c;
Supondo que $b = 10101011 e $c = 10000111:

$a =
10101011 ^
10000111
-------------------------------
00101100
(...)
$a = 00101100;


5. Shifts
O operador Shift desloca N bits à esquerda ou direita dependendo se for utilizado Shift Left ou Shift Right. Devido à rapidez, são muitas vezes usadas na programação como multiplicador ou divisor como substituição dos operadores "*" e "/".

6. Shift Left (Deslocar à esquerda)
O operador Shift Left desloca à esquerda N bits. Pode-se entender o shift left como uma multiplicação por 2 elevado a N. É de salientar que um número elevado a 0 é igual a 1, logo, o shift left de 0 equivale à multiplicação por 1.

Exemplo: $a = 10101011;

$a << 0 =" 10101011;" 1 =" 01010110;" 2 =" 10101100;" 3 =" 01011000;" 4 =" 10110000;" 5 =" 01100000;" a =" 10101011;">> 0 = 10101011;
$a >> 1 = 01010101;
$a >> 2 = 00101010;
$a >> 3 = 00010101;
$a >> 4 = 00001010;
$a >> 5 = 00000101;

quinta-feira, 28 de maio de 2009

quinta-feira, 30 de abril de 2009

Em terras lusitanas

Faz tempo que não posto, estou por aqui a 1 mês já, mais tarde conto tudo o que se passou !

abraços

segunda-feira, 2 de março de 2009

Problemas !

Faz tempo que não escrevo, mas agora vou contar todos os problemas que ocorreram até agora. Em dezembro tinha o contrato e toda a documentação em mãos, fui ao consulado logo cedo, cheguei as 7:30, peguei a ficha 10 fui atendido as 10:40, porém não tive muita sorte, durante a verificação da documentação fui informado que em razão do contrato de trabalho ser de "Termo Certo" eu precisava apresentar um parecer favoravel à contratação de estrangeiro do instituto de emprego portugues. O atendente disse que saia rápido e que ele aceitaria se eu levasse escaneado, não precisava esperar a empresa enviar pelos correios, na hora pensei: "dos males o menor", perder 10 dias era ruim mais não o fim do mundo.
Cheguei em casa e enviei um e-mail informando do novo documento que precisava, e a empresa ficou de me dar uma resposta no outro dia, pois eles também desconheciam o parecer. No dia seguinte não tivemos boas noticias, o documento demora 30 dias pra sair, isso mesmo 30 dias !
Não tivemos outra escolha a não ser esperar. No dia 16 de janeiro, o documento finalmente saiu, tinhamos esperanças de sair antes do carnaval, porém novamente levamos um balde de agua fria no consulado. A atendente implicou com nosso comprovativo de alojamento, pedio que a empresa mandasse autenticado e com uma conta de luz ou de agua, uma coisa que eles já tinham verificado e nunca haviam feito nenhuma reclamação, perdemos mais uma semana nessa. Até que em 19 de fevereiro conseguimos finalmente dar entrada no visto de trabalho.


daqui a pouco falo mais...

inté+

sexta-feira, 5 de dezembro de 2008

Contratos em mãos

Hoje, no final da tarde os contratos e o comprovante de morada chegaram aqui em casa. Em papel timbrado e com carimbos de reconhecimento de firma, fiquei animado ! Agora esperar terça-feira, já que na segundo é dia de Nossa Senhora da Conceição, padroeira do Recife, e nada vai abrir na cidade. Acredito que o consulado não vai implicar com os contratos, mas devem mandar a gente atrás de mais documentos.
A noite olhei o site da TAP, www.flytap.com.br , as passagens estão caras, perto de 5 mil reais, mas ainda vamos fazer uma cotação bem apurada. No momento é só, semana que vem escrevo como foi no consulado.

inté+