Bom dia galera! Mais uma vez venho aqui pedir uma "mãozinha" à vocês!
Pois então, estou fazendo umas linhas de código aqui pra ler um arquivo XML e pegar linhas específicas do mesmo. Vou especificar mais.
Tenho um relatório gerado automaticamente em XML por um Software, e preciso de criar um PHP para filtrar somente os dados que eu quero ( Tendo em vista que o relatório tem mais de 9 mil linhas, e eu só vou precisar de umas 30 ). Eu consigo exibir esse XML em HTML com o PHP e também consigo validar alguns campos com IF ( Inclusive contar o numero de linhas do arquivo e etc ). Meu único problema é na hora de exibir a linha desejada... Pensei em usar um vetor, mas o vetor pega um CARACTER ao invés de uma linha inteira. Vou postar um exemplo do XML e o código aqui pra vocês logo abaixo.
<?php $xml = simplexml_load_file("RELPC.xml"); // Aqui carrega o xml echo "***Hardware INFO***\n"; //Aqui pega o Componente foreach($xml->hardware->page as $page){ //Mostra o cabeçalho. $cabeçalho = $page->attributes(); echo "<br><h3>".$cabeçalho."<br></h3>"; //Abre o XML como TXT para manipular linhas, ao invés de Tags. $arqtxt= fopen("RELPC.xml","r"); $numlinhas=0; $x=0; //Fica em laço de repetição enquanto o arquivo não chega ao Fim. while (!feof($arqtxt)){ //Enquanto o Vetor LINHA recebe dados, ele conta o número de linhas no arquivo XML. if($linha = fgets($arqtxt,4096)){ $numlinhas++; } } echo $numlinhas."<br>"; foreach($xml->hardware->page->item as $hardware){ foreach($hardware->attributes() as $key => $value) { //Exibe propriedades do componente. echo "$key=>$value\n<br>"; if($value=="Disk Space"){ echo $linha[2]; } $x++; } } //Fecha o arquivo XML. fclose($arqtxt); echo "<p>"; } ?> [/codebox]
Agora vem o exemplo de uma parte pequena do XML, mostrado em HTML pelo PHP acima.
[codebox] System Info
9853 Property=>Serial Number Value=>System Serial Number Property=>Chassis Value=>Desktop Property=>Infrared (IR) Supported Value=>No Property=>Machine Type Value=>AT/AT COMPATIBLE Property=>UUID Value=>03000200-0400-0500-0006-000700080009 Property=>Disk Space olaroiValue=>Disk C: 1244 GB Available, 1397 GB Total, 1244 GB Free Property=>Disk Space olaroiValue=>Disk E: 0 MB Available, 31 MB Total, 0 MB Free Property=>Disk Space olaroiValue=>Disk F: 64 GB Available, 78 GB Total, 64 GB Free Property=>Disk Space olaroiValue=>Disk H: 51 GB Available, 70 GB Total, 51 GB Free Property=>Physical Memory Value=>2048 MB Total, 1228 MB Free Property=>Memory Load Value=>40% Property=>Virtual Memory Value=>3941 MB Total, 3131 MB Free Property=>PageFile Name Value=>\??\F:\pagefile.sys Property=>PageFile Size Value=>2046 MB Property=>In use Value=>96 MB Property=>Max used Value=>97 MB Property=>Registry Size Value=>2 MB (current), 120 MB (maximum) Property=>Profile GUID Value=>{6b16a440-6f35-11df-85d0-806d6172696f} Property=>The system clock interval Value=>15 ms
Sei que o valor da linha no XML não é o mesmo HTML acima, pois há quebras de linha no HTML. Eu preciso de avaliar a propriedade ( Se é hd, memória, etc...) e pegar a linha de baixo, onde estão as informações que eu necessito.
Pergunta
Rafael Pasc.
Bom dia galera! Mais uma vez venho aqui pedir uma "mãozinha" à vocês!
Pois então, estou fazendo umas linhas de código aqui pra ler um arquivo XML e pegar linhas específicas do mesmo. Vou especificar mais.
Tenho um relatório gerado automaticamente em XML por um Software, e preciso de criar um PHP para filtrar somente os dados que eu quero ( Tendo em vista que o relatório tem mais de 9 mil linhas, e eu só vou precisar de umas 30 ). Eu consigo exibir esse XML em HTML com o PHP e também consigo validar alguns campos com IF ( Inclusive contar o numero de linhas do arquivo e etc ). Meu único problema é na hora de exibir a linha desejada... Pensei em usar um vetor, mas o vetor pega um CARACTER ao invés de uma linha inteira. Vou postar um exemplo do XML e o código aqui pra vocês logo abaixo.
Agora vem o exemplo de uma parte pequena do XML, mostrado em HTML pelo PHP acima.
System Info
9853
Property=>Serial Number
Value=>System Serial Number
Property=>Chassis
Value=>Desktop
Property=>Infrared (IR) Supported
Value=>No
Property=>Machine Type
Value=>AT/AT COMPATIBLE
Property=>UUID
Value=>03000200-0400-0500-0006-000700080009
Property=>Disk Space
olaroiValue=>Disk C: 1244 GB Available, 1397 GB Total, 1244 GB Free
Property=>Disk Space
olaroiValue=>Disk E: 0 MB Available, 31 MB Total, 0 MB Free
Property=>Disk Space
olaroiValue=>Disk F: 64 GB Available, 78 GB Total, 64 GB Free
Property=>Disk Space
olaroiValue=>Disk H: 51 GB Available, 70 GB Total, 51 GB Free
Property=>Physical Memory
Value=>2048 MB Total, 1228 MB Free
Property=>Memory Load
Value=>40%
Property=>Virtual Memory
Value=>3941 MB Total, 3131 MB Free
Property=>PageFile Name
Value=>\??\F:\pagefile.sys
Property=>PageFile Size
Value=>2046 MB
Property=>In use
Value=>96 MB
Property=>Max used
Value=>97 MB
Property=>Registry Size
Value=>2 MB (current), 120 MB (maximum)
Property=>Profile GUID
Value=>{6b16a440-6f35-11df-85d0-806d6172696f}
Property=>The system clock interval
Value=>15 ms
Sei que o valor da linha no XML não é o mesmo HTML acima, pois há quebras de linha no HTML. Eu preciso de avaliar a propriedade ( Se é hd, memória, etc...) e pegar a linha de baixo, onde estão as informações que eu necessito.
Valeu galera, espero uma respota!!!
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.