|
| |
|
|
| |
для: mastep
(26.04.2007 в 13:29)
| | | вот код:
<?
$xml_text=<<<XML
<?xml version="1.0" encoding="iso-8859-1" ?>
<ORDERS>
<Customer>Customer1</Customer>
<Nods><Node1>Nfffff</Node1>
<Node2>Node2 text</Node2>
</Nods>
<Nodf><Node1>yyyyyyyy</Node1>
<Node2>yyyyyyyy</Node2>
</Nodf>
</ORDERS>
XML;
//****************************************
class xml_pars
{
var $root;
var $dom;
function load($xml_text)
{
if (!$this->dom = domxml_open_mem($xml_text))
{
echo "Ошибка обработки XML<br>";
exit;
}
$dom=$this->dom;
$this->root= $dom->document_element();
}
function __get($key, &$value) //выводит данные
{
global $xml_text;
$this->load($xml_text);
$root=$this->root;
$dom=$this->dom;
if($nodes=$this->root->get_elements_by_tagname("$key"))
{
$nodez=$nodes[0];
if($nodez!="")
{
$n_chil=$nodez->child_nodes();
foreach($n_chil as $dz)
{
if(1==$dz->type)
{
$this->go="roza";
$oo=new xml_pars();
$value=$oo;
return true;
}
if($dz->node_type()==3)
{
$value=$dz->content;
return true;
}
}
}
else
{
return false;
}
}
}
}
//******************************************
overload('xml_pars');
$oo=new xml_pars();
$oo->load($xml_text);
echo $oo->Nodf->Node2;
?> | |
| |
|
|
| |
|
|
| |
для: cheops
(26.04.2007 в 13:20)
| | | Я сделал... если долго мучится->получится
короче суть такая
у нас есть :
echo "$oo->Nods->Node1";
функция get берет первый аргумент Nods, а возвращает $oo и ссылается опять на себя (рекурсия), т.е $oo->Nods=$oo
при ссылки саму на себя следующий аргумент Node1
вот так.
если будут нужны примеры скопирую. | |
| |
|
|
| |
|
|
| |
для: mastep
(25.04.2007 в 10:25)
| | | Тут через __get() вряд ли получится, нужно создавать объект Nods или динамически формировать его в __get() и возвращать. | |
| |
|
|
| |
|
|
| |
для: cheops
(25.04.2007 в 00:59)
| | | Да вложенность может быть произвольной.
Как сделать вывод допусти одного проблем нет:
$oo->Customer;
а вот, чтобы так:
$oo->Nods->Node1;
проблемы есть с передачей аргумента Node1 функции __get() | |
| |
|
|
| |
|
|
| |
для: mastep
(24.04.2007 в 15:57)
| | | У вас поля XML-файла могут иметь произвольную степень вложненности? В любом случае вы можете формировать динамические объекты. | |
| |
|
|
| |
|
|
| | Ребят задача стоит так:
есть XML:
$xml_text=<<<XML
<?xml version="1.0" encoding="iso-8859-1" ?>
<ORDERS>
<Customer>Customer1</Customer>
<Nods>
<Node1>Node1 text</Node1>
<Node2>Node2 text</Node2>
</Nods>
</ORDERS>
XML;
есть класс
class xml_pars
{
есть функция:
function __get($key)
{
}
}
как сделать так, чтобы при написании
overload('xml_pars');
$oo=new xml_pars();
echo "$oo->Nods->Node1";
выдавался текст нода Node1, т.е "Node1 text."
Делается говорят это с помощью рекурсии, но чего то не могу понять как. | |
| |
|
|
|