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: 24 años, 10 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