Tema: DOM xml
Ver Mensaje Individual
  #12 (permalink)  
Antiguo 20/12/2002, 04:19
Avatar de lical
lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 4 meses
Puntos: 0
Ya más o menos lo comprendo:

Código:
<?xml version="1.0" ?>

<rootdoc>
	<user id="1">
		<username>user1</username>
		<surname>surname1</surname>
	</user>
	<user id="2">
		<username>user2</username>
                <surname>surname2</surname>
	</user>
</rootdoc>
Modificando las funciones del artículo que os decía, me ha quedado algo usable:

Código PHP:
<?php
function get_content($parent)
{
    
$nodes $parent->child_nodes();
    while (
$node array_shift($nodes))
    {
        if (
$node->node_type() == XML_TEXT_NODE)
            return 
$node->node_value();
    }
    return 
"";
}

function 
find_content($parent$name)
{
    
$nodes $parent->child_nodes();
    while (
$node array_shift($nodes))
    {
        if (
$node->node_name() == $name)
        {
            return 
get_content($node);
        }
    }
    return 
"";
}

function 
find_attr($parent$name$attr)
{
    if (
$parent->node_name() == $name)
    {
        
$attribs $parent->attributes();
        while (
$attrib array_shift($attribs))
        {
            if (
$attrib->name() == $attr)
            {
                return 
$attrib->value();
            }
        }
    }
    return 
"";
}


$archivo "./midoc.xml";
$doc domxml_open_file($archivo);

$root $doc->root();
$users $root->child_nodes();

while (
$user array_shift($users))
{
    if (
$user->node_type() == XML_ELEMENT_NODE)
    {
        echo 
"usuario\n";
        
$username find_content($user"username");
        
$surname find_content($user"surname");
        
$id find_attr($user"user""id");
        echo 
"Id: $id , usuario: $username , surname: $surname \n";
    }
}

echo 
"\n";
?>
Espero que a alguien esto le ayude
Yo más o menos ya lo voy comprendiendo.


Un saludo,
__________________
lical-> Usuario registrado de Linux #254225

ZonaSiete.ORG - GNU/Linux eminentemente práctico