PDF de programación - PHP y XML

Imágen de pdf PHP y XML

PHP y XMLgráfica de visualizaciones

Publicado el 24 de Junio del 2017
1.151 visualizaciones desde el 24 de Junio del 2017
98,4 KB
18 paginas
Creado hace 14a (09/12/2009)
Programación en Internet 2009-2010

Departamento de Lenguajes y
Sistemas Informáticos

PHP y XML
PHP y XML

Programación en Internet

Curso 2009-2010

Programación en Internet – Curso 2009-2010

Índice

• Introducción
• El DOM en PHP

DLSI - Universidad de Alicante

1

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

Introducción

• ¿Cómo se trabaja con un documento

XML desde el punto de vista de un
programador?

Programación en Internet – Curso 2009-2010

Introducción

• DOM:

– Especificación de W3C
– Mecanismo para que desde cualquier lenguaje de
programación se pueda manipular un documento
XML o HTML
• Básicamente:

– Crea una estructura lógica para el documento
– Crea una estructura lógica para el documento

(llamada “árbol nodal”)

– Proporciona un método para leer y manipular el

documento

DLSI - Universidad de Alicante

2

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

Introducción

• DOM trata un documento XML como

una jerarquía de nodos
– Distintos nodos y cada uno tiene permitido

solo ciertos hijos de ciertos tipos de nodo

– Existen algunos tipos de nodo que son

hoja No pueden tener hijos

Programación en Internet – Curso 2009-2010

Introducción

Tipo de nodo
Document

DocumentFragment

DocumentType
EntityReference
EntityReference

Hijos permitidos
Element (uno como máximo)
ProcessingIntruction
Comment
DocumentType
Element
ProcessingIntruction
Comment
Text
CDATASection
EntityReference
Ninguno
Element
Element
ProcessingIntruction
Comment
Text
CDATASection
EntityReference

DLSI - Universidad de Alicante

3

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

Introducción

Tipo de nodo
Element

Attr

ProcessingInstruction
Comment
Text
CDATASection
Entity

Notation

Hijos permitidos
Element
ProcessingIntruction
Comment
Text
CDATASection
EntityReference

Text
EntityReference
Ninguno
Ninguno
Ninguno
Ninguno
Element
ProcessingIntruction
Comment
Text
CDATASection
EntityReference

Ninguno

Programación en Internet – Curso 2009-2010

Introducción

• Ejemplo:

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
lang="es">

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es"
<head>
<title>Una página de ejemplo</title>
</head>
<body>
<!-- Esto antes era un ejemplo un poco simple, pero ahora ya no --
>
<h1>DOM: Document Object Model</h1>
<h1>DOM: Document Object Model</h1>
<p>
El <b>DOM</b> permite consultar y modificar un documento <i>HTML
</p>
</body>
</html>

desde <b>JavaScript</b></i>

DLSI - Universidad de Alicante

4

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

Documento
Document

DOCTYPE
DocumentType

<html>
Element

<head>
Element
Element

<title>
Element

<body>
Element
Element

Esto antes era…

Comment

<h1>
Element

<p>

Element

Una página de prueba

Text

DOM: Document…

Text

El
Text

<b>

Element

DOM
Text

permite consultar y…

Text

HTML desde

Text

<i>

Element

<b>

Element

JavaScript

Text

Programación en Internet – Curso 2009-2010

El DOM en PHP

• Desde PHP 5, está disponible como
parte del núcleo de PHP la extensión
DOM

• En PHP 4 hay que usar DOM XML

DLSI - Universidad de Alicante

5

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

El DOM en PHP

• Clases principales:

DOMDocument: representa el nivel superior de un
– DOMDocument: representa el nivel superior de un
documento XML (pero no el elemento raíz)

– DOMException: representa un error producido en el

documento XML

– DOMNode: representa un nodo en el documento XML
– DOMElement: representa un elemento (etiqueta)
– DOMAttr: representa un atributo
DOMAttr: representa un atributo
– DOMNodeList: representa una lista de nodos
– DOMNamedNodeMap: representa una lista de nodos
que se pueden acceder por un índice o por un nombre
(se emplea para representar los atributos)

Programación en Internet – Curso 2009-2010

Jerarquía de clases

DOMNode

Exception

DOMDocument

DOMElement

DOMAttr

DOMException

DOMNodeList

DOMNamedNodeMap

DLSI - Universidad de Alicante

6

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

DOMDocument

• Representa un documento XML (XHTML)
• Funciona como raíz del árbol del documento
• Hereda de DOMNode

Programación en Internet – Curso 2009-2010

DOMDocument

• Propiedades:

– doctype: contiene el DOCTYPE
doctype: contiene el DOCTYPE
– documentElement: el elemento raíz del
documento
– documentURI: la localización del documento
– formatOutput: formatea la salida “bonita” con
– textContent: contenido textual del documento
– validateOnParse: indica si se tiene que validar
lid

sangría y espacios en blanco extra

ti

i
el documento durante la carga

i di

DLSI - Universidad de Alicante

7

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

DOMDocument

– load: carga un documento (local o remoto)
t )
– loadXML: carga un documento a partir de una

(l

d

t

l

• Métodos:

cadena

– save: guarda un documento en un fichero
– saveXML: guarda un documento en una cadena
schemaValidate: valida un documento contra
– schemaValidate: valida un documento contra
su esquema

– validate: valida un documento contra su DTD

Programación en Internet – Curso 2009-2010

DOMDocument

• Crear nuevo contenido:

– createAttribute: crea un atributo
– createComment, createElement,
createProcessingInstruction,
createTextNode, …: crea un nodo
concreto

DLSI - Universidad de Alicante

8

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

DOMDocument

• Seleccionar contenido de un documento:

l

l

l

d

b

– getElementById: busca y devuelve el elemento
t

con el ID indicado; devuelve un DOMElement
• Para que funcione, se debe crear un ID con

setIdAttribute o se debe proporcionar un DTD que
defina el ID
– getElementByTagName: busca y devuelve todos

los elementos con la etiqueta indicada; devuelve
los elementos con la etiqueta indicada; devuelve
un DOMNodeList

Programación en Internet – Curso 2009-2010

DOMDocument

• Ejemplos:

– Cargar y mostrar un documento XML a

partir de un fichero

– Cargar y mostrar un documento XML a

partir de una URL

– Cargar, mostrar y guardar un documento

y g

g

XML a partir de una cadena

DLSI - Universidad de Alicante

9

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

DOMDocument

• A partir de un fichero:
<?php

$objDOM = new DOMDocument();
$objDOM->load("biblioteca.xml");
echo "<pre>\n";
echo "textContent:\n";
echo htmlspecialchars($objDOM->textContent);
echo "XML:\n";
echo htmlspecialchars($objDOM->saveXML());
echo "</pre>\n";
echo "</pre>\n";

?>

Programación en Internet – Curso 2009-2010

DOMDocument

• A partir de una URL:
<?php

$objDOM = new DOMDocument();
$objDOM-
>load("http://www.dlsi.ua.es/~slujan/files/biblioteca
.xml");
echo "<pre>\n";
echo "textContent:\n";
echo htmlspecialchars($objDOM->textContent);
echo "XML:\n";
echo htmlspecialchars($objDOM->saveXML());
echo "</pre>\n";

?>

DLSI - Universidad de Alicante

10

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

DOMDocument

• A partir de una cadena:
<?php

$doc = '<?xml version="1.0" encoding="ISO-8859-1"
standalone="no"?>';
$doc .= '<!DOCTYPE BIBLIOTECA SYSTEM
"biblioteca.dtd">';
$doc .= '<BIBLIOTECA>';
$doc .= '<LIBRO COD="1">';
$doc .= '<TITULO>XML para todos</TITULO>';
$doc .= '<AUTOR>Sergio Lujan Mora</AUTOR>';
j
$doc .= '<ANYO>2001</ANYO>';
$doc .= '<EDITORIAL>UA Prensa</EDITORIAL>';
$doc .= '</LIBRO>';

g

Programación en Internet – Curso 2009-2010

DOMDocument

$doc .= '<LIBRO COD="11">';
$doc .= '<TITULO>Como aprobar una oposición</TITULO>';
$doc
= '<AUTOR>Marisa Zayas Fornieles</AUTOR>';
$doc .= '<AUTOR>Marisa Zayas Fornieles</AUTOR>';
$doc .= '<AUTOR>Sergio Lujan Mora</AUTOR>';
$doc .= '<ANYO>1999</ANYO>';
$doc .= '<EDITORIAL>Prensa Editorial</EDITORIAL>';
$doc .= '</LIBRO>';
$doc .= '</BIBLIOTECA>';
$objDOM = new DOMDocument();
$objDOM->loadXML($doc);
echo "<pre>\n";
echo "textContent:\n";
echo htmlspecialchars($objDOM->textContent);
echo "XML:\n";
echo htmlspecialchars($objDOM->saveXML());
echo "</pre>\n";

?>

DLSI - Universidad de Alicante

11

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

DOMNode

• Propiedades:
tt ib t

– attributes: contiene la lista de atributos
: contiene la lista de atributos
– nodeName: el nombre del nodo (etiqueta)
– nodeValue: el texto asociado con el nodo
– nodeType: especifica el tipo de un nodo
– textContent: contenido texto del nodo y todos

sus descendientes

Programación en Internet – Curso 2009-2010

DLSI - Universidad de Alicante

12

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

DOMNode

• ¡Importante!: DOM no trata los

atributos como nodos

• Se tiene que emplear la propiedad
attributes, que es de tipo
DOMNamedNodeMap

Programación en Internet – Curso 2009-2010

DOMNode

• Propiedades de DOMDocument y DOMNode para

recorrer el árbol:
– childNodes: contiene una lista con los nodos hijo
– firstChild: contiene el primer nodo hijo
– lastChild: contiene el último nodo hijo
– nextSibling: contiene el siguiente nodo hermano
– parentNode: contiene el nodo padre
– previousSibling: contiene el nodo hermano anterior

• Métodos:

– hasAttributes: indica si un nodo tiene atributos
– hasChildNodes: indica si un nodo contiene nodos hijo

t ib t

d ti

i di

i

DLSI - Universidad de Alicante

13

Programación en Internet 2009-2010

Programación en Internet – Curso 2009-2010

DOMNode

• ¡Importante!: No todos los diferentes

tipos de nodos pueden contener la
misma información
• Consultar la propiedad nodeType
• Ejemplo:
– Atributos (attributes): pueden tener
At ib t
)
Element, Entity y Notation
– Nodos hijo (childNodes): NO pueden
tener CDATASec
  • Links de descarga
http://lwp-l.com/pdf4607

Comentarios de: PHP y XML (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad