Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Etiquetas <LMC>
<MOL TITLE = "agua" >
Comience Etiquetas<ÁTOMOS>
Etiquetas finales <FORMACIÓN BUILTIN = "ELSYM" > HOH</FORMACIÓN>
</ÁTOMOS>
<CAUTIVERIO>
atributos <FORMACIÓN BUILTIN = "ATID1" > 1 2</FORMACIÓN>
<FORMACIÓN BUILTIN = "ATID2" > 2 3</FORMACIÓN>
<FORMACIÓN BUILTIN = "ORDEN" > 1 1</FORMACIÓN>
</CAUTIVERIO>
</MOL>
Atributo
</LMC>
Valores
• Para leer y actualización - crear y manipular - un documento XML, se
necesita un analizador XML.
• Hay dos tipos básicos de analizadores XML:
• analizador basado en árboles: Este analizador transforma un documento
XML en una estructura de árbol. Analiza todo el documento, y proporciona
acceso a los elementos del árbol
• analizador basado en eventos: Vistas de un documento XML como una serie
de eventos. Cuando se produce un evento específico, se llama a una función
de manejarlo
El análisis de respuesta XML
• <? Php
$ XmlDoc = new DOMDocument ();
$ XmlDoc-> carga ( “note.xml");
• <? Php
$ XmlDoc = new DOMDocument ();
$ XmlDoc-> carga ( "note.xml");
$ X = $ xmlDoc-> documentElement;
foreach ($ x-> childNodes como una pieza $)
{
imprimir $ Item-> nombreNodo. "=". $ Item-> nodeValue. "<br />";
}
?>
• En la salida de lo anterior, se ve que hay nodos de texto vacíos entre cada
elemento.
• Cuando XML genera, que a menudo contiene espacios en blanco entre los
nodos. El analizador DOM XML trata estos elementos ordinarios
XMLReader
• avanzar analizador basado en flujo
• Es un analizador de tracción
• Sobre la base de la C API # XmlTextReader
• ventajas:
• huella de memoria baja
• soporte de espacio de nombres
• simple API
• soporte de validación
• Conjunto de funciones avanzadas
• Procesamiento más rápido
XMLReader: Ejemplo simple
xmlreader / reader_simple.xml
<?xml version='1.0'?>
<chapter xmlns:a="http://www.example.com/namespace-a"
xmlns="http://www.example.com/default">
<a:title>XMLReader</a:title>
<para>
First Paragraph
</para>
<a:section a:id="about">
<title>About this Document</title>
<para>
<!-- this is a comment -->
<?php echo 'Hi! This is PHP version ' . phpversion(); ?>
</para>
</a:section>
</chapter>
XMLReader:
xmlreader/reader_simple.php
$reader = new XMLReader();
$reader->open('reader_simple.xml');
$reader->read();
while($reader->read()) {
switch ($reader->nodeType) {
case XMLReader::ELEMENT:
print "Element: ".$reader->name."\n";
if ($reader->hasAttributes && $reader->moveToFirstAttribute()) {
do {
print " ".$reader->name."=".$reader->value."\n";
} while($reader->moveToNextAttribute());
}
break;
case XMLReader::PI:
print "PI Target: ".$reader->name."\n PI Data: ".$reader->value."\n";
}
}
XMLReader: Ejemplo simple
RESULTADOS
Element: para
Element: a:section
a:id=about
Element: title
Element: para
PI Target: php
PI Data: echo 'Hi! This is PHP version ' . phpversion();
Crear XML
$dom = new domDocument("1.0","ISO-8859-1");
$dom->formatOutput = 1;
$root = $dom->createElement('books');
$branch = $dom->createElement('book');
$branch->setAttribute('ISBN', '0973862106');
$leaf = $dom->createElement('title');
$leaf->appendChild(
$dom->createTextNode(‘PHP Guide to Security'));
$branch->appendChild($leaf);
creación de XML Paso 2
$leaf = $dom->createElement('price');
$leaf->appendChild(
$dom->createTextNode('32.99'));
$branch->appendChild($leaf);
$leaf = $dom->createElement('url');
$leaf->appendChild(
$dom->createCDATASection(‘amazon.com/…’);
$branch->appendChild($leaf);
Creación de XML Paso 3
$root->appendChild($branch);
$dom->appendChild($root);
echo $dom->saveXML();
¿Que tenemos?
• Pros:
• navegación y modificación del documento XML completo
• La navegación y búsqueda son extremadamente rápido una vez que el árbol se carga en
memoria
• Contras:
• Debe esperar hasta que se cargue todo el árbol para comenzar a trabajar con el código XML.
• mucha memoria
Funciones PHP SimpleXML
• SimpleXML se encarga de las tareas más
comunes XML
• Es una manera fácil de obtener atributos de
un elemento y el contenido del texto
• SimpleXML sólo toma unas pocas líneas de
código para leer datos de texto de un
elemento (En comparación con DOM y el analizador de Expat)
Funciones PHP SimpleXML
Funciones SimpleXML:
• simplexml_import_dom - Obtener un objeto
SimpleXMLElement desde un nodo DOM.
• simplexml_load_file - Interpreta un archivo XML en un
objeto
• simplexml_load_string - Interpreta una cadena XML en un
objeto
Funciones PHP SimpleXML
SimpleXMLElement Clase:
• SimpleXMLElement :: addAttribute - Añade un atributo al
elemento SimpleXML
• SimpleXMLElement :: addChild - Añade un elemento
secundario al nodo XML
• SimpleXMLElement :: asXML - Devuelve una cadena XML
bien formado basado en el objeto SimpleXML
• SimpleXMLElement ::atributos - Identifica atributos de un
elemento (... continuará ...)
Funciones PHP SimpleXML
SimpleXMLElement Clase:
• SimpleXMLElement ::niños - Encuentra los hijos del
nodo dado
• SimpleXMLElement :: __ construct - Crea un nuevo
objeto SimpleXMLElement
• SimpleXMLElement :: recuento - Cuenta los hijos de un
elemento
• SimpleXMLElement :: getDocNamespaces - Devuelve
espacios de nombres declarados en el documento
(…continuará…)
Funciones PHP SimpleXML
SimpleXMLElement Clase:
• SimpleXMLElement ::getNombre - Obtiene el nombre
del elemento XML
• SimpleXMLElement :: getNamespaces - Devuelve
espacios de nombres utilizados en el documento
• SimpleXMLElement :: registerXPathNamespace - Crea
un contexto prefijo / ns para la siguiente petición XPath
• SimpleXMLElement :: XPath - Se ejecuta consulta XPath
en datos XML
Código SimpleXML de PHP
displayChildrenRecursive ($ xml);
echo "/> <br"; (...continuará...)
Código SimpleXML de PHP
function displayChildrenRecursive($xmlObj,$depth=0)
{ foreach($xmlObj->children() as $child) {
echo "<br/>";
echo str_repeat('-',$depth).$child->getName().": ".
$child." ";
foreach($child->attributes() as $attr) {
echo str_repeat('',$depth).$attr- >getName()."=".$attr."
";
}
displayChildrenRecursive($child,$depth+1);
}}
¿Cómo funciona el Código?
1. Cargar el archivo XML
2. Obtener el nombre y atributos del elemento raíz
3. Crear una función recursiva con un bucle foreach
que activará en cada nodo hijo, utilizando los hijos
() Función
4. Para cada nodo hijo: utilizar el método getName ()
para cada nombre del elemento que se muestra;
utilizar un bucle foreach para obtener los nodos de
atributo para cada nodo hijo, usando los atributos
función ().
5. Para cada atributo utilizar el método getName ()
para el nombre que se visualizará.
PHP XML DOM analizador
• El analizador DOM es un analizador basado
en árbol.
• analizador de árbol basa: Transforma un
documento XML en una estructura de árbol.
Analiza todo el documento, y proporciona
acceso a los elementos del árbol
• Bueno para archivos pequeños y medianos
XML (Cargar todo el archivo en la memoria)
PHP XML DOM analizador
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("test2.xml");
print $xmlDoc->saveXML();
print "<br/><br/>Alternative - Method 2: <br/><br/>";
$x = $xmlDoc->documentElement;
print $x->nodeName.": ";
foreach ($x->attributes AS $Attr){
echo $Attr->nodeName." = \"".
$Attr->nodeValue."\" ";}
PHP Código DOM XML
displayChildrenRecursive($x);
function displayChildrenRecursive($xmlObj,$depth=0) {
foreach ($xmlObj->childNodes AS $child) {
if ($child->nodeType==1 ){
echo "<br/>";
echo "-".str_repeat('-',$depth).$child->nodeName.": ";
foreach ($child->attributes AS $attr){
echo str_repeat('',$depth).$attr->nodeName." = \"".$attr-
>nodeValue."\" "; }
echo "(".$child->textContent.")";
displayChildrenRecursive($child,$depth+1); }}}
?>
¿Cómo funciona el Código?
1. Crear una instancia de DOMDocument y utilizarlo
para cargar un archivo XML
2. Método 1: El saveXML () la función pone el
documento XML interno en una cadena, por lo que
pueden dar salida
3. Método 2:
- Obtener el nombre del elemento raíz y atributos
- Loop de forma recursiva a través de todos los
elementos de todos los childNodes y de salida del
nodo (nodo de elemento y nodo de atributo)
nombres y contenidos
SimpleXML
• Instanciar SimpleXML
$xml = "<library><book>XML and PHP</book></library>";
$sxe = new SimpleXMLElement($xml);
while($row = mysql_fetch_array($query)){
$xml .= "<book>";
$xml .= "<id>".$row['id']."</id>";
$xml .= "<title>".$row['title']."</title>";
$xml .= "<author>".$row['author']."</author>";
$xml .= "<description>".$row['description']."</description>";
$xml .= "<on_sale>".$row['on_sale']."</on_sale>";
$xml .= "</book>";
}
$xml .= "</library>";
$sxe = new SimpleXMLElement($xml);
$sxe->asXML("test.xml");
Elemento de acceso
• Para acceder a los elementos del árbol XML por su nombre
<?php
$katalog = simplexml_load_file(“kereta.xml");
print_r($katalog); //imprime arbol XML tree como arreglo
echo $katalog->kereta[4]->model;