Publicado el 24 de Junio del 2017
1.248 visualizaciones desde el 24 de Junio del 2017
98,4 KB
18 paginas
Creado hace 15a (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
Comentarios de: PHP y XML (0)
No hay comentarios