Welcome to Scribd. Sign in or start your free trial to enjoy unlimited e-books, audiobooks & documents.Find out more
Download
Standard view
Full view
of .
Look up keyword
Like this
8Activity
0 of .
Results for:
No results containing your search query
P. 1
Simple XML - Lidando com XML no PHP5

Simple XML - Lidando com XML no PHP5

Ratings: (0)|Views: 629|Likes:
Published by api-3736607
Simple XML - Lidando com XML no PHP5
Simple XML - Lidando com XML no PHP5

More info:

Published by: api-3736607 on Oct 16, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

03/18/2014

pdf

text

original

Simple XML - Lidando com XML no PHP5
por Anderson de Arruda Casimiro

A extens\u00e3o simpleXML pode ser adionada ao PHP4 e vem habilitada por default no PHP5. Tratar
documentos XML com ela \u00e9 algo relativamente simples. Mostrarei neste artigo um exemplo de como
utilizar um arquivo XML para manter a configura\u00e7\u00e3o de um sistema, de uma maneira simples.

Bem, este \u00e9 o arquivo que vamos utilizar... l\u00f3gico que num ambiente web este arquivo dever\u00e1 ficar
num diret\u00f3rio protegido, mas seu script PHP deve ter acesso ao mesmo.
core.xml:
<?xml version="1.0"?>
<core>

<sys>
<name>Mukeka</name>
<version>1.0</version>
<author>Anderson de Arruda Casimiro</author>
<email>anderson@duodraco.com</email>
<fakeemail>anderson at duodraco dot com</fakeemail>
<title>:: Mukeka Braba</title>

</sys>

<db>
<type>mysql</type>
<host>localhost</host>
<user>quser</user>
<password>quser</password>
<database>mukeka</database>

</db>
</core>

A fun\u00e7\u00e3o simplexml_load_file() tenta ler o arquivo passado no par\u00e2metro. Se quiser passar uma string
contendo o XML(algo como "<core><title>mukeka</title></core>") utilize a fun\u00e7\u00e3o
simplexml_load_string(). Essas fun\u00e7\u00f5es retornam um objeto(a tag pai do xml) com v\u00e1rios objetos
encadeados(a tags filhas), que por sua vez possuem outros objetos encadeados(as filhas das filhas), e
assim por diante.

Por exemplo, em nosso caso, para se pegar o valor de name, dentro de sys, dentro de core fazemos
assim:
<?php
$obj= simplexml_load_file("core.xml");
echo$obj->sys->name;
?>
Outra fun\u00e7\u00e3o bastante util \u00e9 a xpath. Se quis\u00e9ssemos acessar direto o objeto name poder\u00edamos fazer
assim:

<?php
$obj= simplexml_load_file("core.xml");
$srch= $obj->xpath("name");

www.insite.com.br
Coment\u00e1rios -
echo$srch[0];
?>
Agora a p\u00e1gina que efetivamente pegar\u00e1 o XML, o tratar\u00e1 e definir\u00e1 as vari\u00e1veis para o sistema:
<?php
classCore
{
private $system = array();
private $db = array();
function__construct()
{

$xml = new Xml("core.xml");
$this->system= $xml->obj("sys");
$this->db= $xml->obj("db");

}
publicfunction getSystem($index)
{
return$this->system[$index];
}publicfunction getDb($index)
{
return$this->db[$index];
}
}classXml
{
public $data;
function__construct($file)
{
$this->data= simplexml_load_file($file) or die("N\u00e3o \u00e9 um arquivo v\u00e1lido");
}functionobj($search)
{
$obj= $this->data->xpath($search);
returnget_object_vars($obj[0]);
}
}
?>

A Classe "Xml" somente possui um m\u00e9todo construtor, o qual vai ler o arquivo XML e transform\u00e1-lo
num objeto e defin\u00ed-lo como atributo data. O m\u00e9todo obj faz buscas usando o m\u00e9todo xpath do
simplexml. Como par\u00e2metro voc\u00ea pode passar a string com o nome da tag a ser encontrada, o que
pode retornar mais de um resultado, que ser\u00e1 colocado em um array; voc\u00ea tambg\u00e9m pode passar uma
hierarquia, por exemplo: "/core/sys".

O retorno do m\u00e9todo obj \u00e9 um get_object_vars porque para nossa outra classe n\u00e3o precisaremos de
objetos, mas sim seus valores; retorno o indice 0(zero) do resultado de $obj porque queremos o
primeiro(e \u00fanico) resultado da busca por "sys".
No construtor da classe Core, instanciamos Xml, e chamamos a busca ($xml->obj()) por "sys" e "db"
que s\u00e3o as tags que v\u00e3o fazer nossas defini\u00e7\u00f5es. Esta classe ainda conta com os m\u00e9todos getSystem() e
getDb(), os quais ir\u00e3o retornar os valores propriamente ditos.

L\u00f3gico que seria muito mais f\u00e1cil definir estes atributos direto no script, uma vez que este \u00e9 muito
simples. Agora imagine qu\u00e3o mais facil ficar\u00e1 para tratar outros documentos XML, e us\u00e1-los em
outros sistemas, e at\u00e9 RSS, para o qual estou preparando uma coluna para breve, junto com as outras
funcionalidades do simplexml.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->