ccc

Mostrando entradas con la etiqueta XML. Mostrar todas las entradas
Mostrando entradas con la etiqueta XML. Mostrar todas las entradas

Crear XML desde php

 $content = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><root>';
        foreach($productos as $producto) {
            $content .= "<producto>";
            $content .= "<nombre>".$producto->nombre."</nombre>";
            $content .= "<descripcion>".$producto->descripcion."</descripcion>";
            $content .= "<imagen>.$producto->imagen.</imagen>";
            $content .= "</producto>";
        }
        $content .= "</root>";

header( 'Content-Description: File Transfer');
header( 'Content-Type: application/xml' );
header( 'Content-Disposition: attachment; filename=productos.xml' ); 
header( 'Content-Transfer-Encoding: binary');
header( 'Connection: Keep-Alive');
header( 'Expires: 0');
header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0');
header( 'Pragma: public' );
header( 'Content-Length: '.strlen( $content ) );
echo $content; // genera el XML

Ajax: Leer XML

El fichero XML, aparte de la cabecera de codificación (encoding="UTF-8"), tiene que estar creado en UTF-8.

peliculas.xml:
<?xml version="1.0" encoding="UTF-8"?>
<cine>
  <pelicula>
    <titulo>Lo que el viento se llevó</titulo>
    <director>Victor Fleming</director>
    <anno>1939</anno>
  </pelicula>
  <pelicula>
    <titulo>Rebeca</titulo>
    <director>Alfred Hitchcock</director>
    <anno>1940</anno>
  </pelicula>
  <pelicula>
    <titulo>Qué verde era mi valle</titulo>
    <director>John Ford</director>
    <anno>1941</anno>
  </pelicula>
</cine>

index.php:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
</head>
<body>

<ul></ul>

<script>
$.ajax({
type: "GET",
url: "./peliculas.xml",
dataType: "xml",
// contentType: "application/x-www-form-urlencoded;charset=utf-8",
    error: function (e) {
        console.log("XML reading Failed: ", e);
    },
    success: function (response) {
$("ul").children().remove();
$(response).find("pelicula").each(function () {
$("ul").append('<li>'+$(this).find('titulo').text()+'</li>');
$("ul").append('<li>'+$(this).find('director').text()+'</li>');
$("ul").append('<li>'+$(this).find('anno').text()+'</li>');
});
    }
});
</script>
</body>
</html>

Convertir un fichero XML a Array

$xml = simplexml_load_string($xmlstring, "SimpleXMLElement", LIBXML_NOCDATA);
$json = json_encode($xml);
$array = json_decode($json,TRUE);

XML: Crear un fichero XML desde PHP

$fp = fopen("fichero1.xml", "w+");
fputs($fp, '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL);
fputs($fp, '
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">'.PHP_EOL);

foreach ($arrLinks as $key =>$valor) {
$cadena = "<url>".PHP_EOL."<loc>".$key."</loc>".PHP_EOL."</url>";
fputs($fp, $cadena.PHP_EOL);
}
fputs($fp, "</urlset>".PHP_EOL);
fclose($fp);

XML: Mostrar el contenido de un fichero XML en PHP

peliculas.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!-- indica la version del documento XML -->
<raiz> <!--  es el tag raiz, debe ser unico -->
  <pelicula>
    <titulo>Lo que el viento se llevó</titulo>
    <anno>1939</anno>
  </pelicula>
  <pelicula>
    <titulo>Rebeca</titulo>
    <anno>1940</anno>
  </pelicula>
</raiz>
--------------------------------------------------
$xml = simplexml_load_file("peliculas.xml");
// print_r($xml);
foreach($xml->children() as $child)  {
 echo $child->titulo."<br>";
}

------------------------------------------------------------

Mostrar todo el contenido de todo un XML de forma recursiva:
peliculas2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!-- indica la version del documento XML -->
<raiz> <!--  es el tag raiz, debe ser unico -->
 <pelicula>
   <titulo>Lo que el viento se llevó</titulo>
   <anno>1939</anno>
   <actores>
     <actor>
       <nombre>Vivien Leigh</nombre>
       <nacionalidad>Inglaterra</nacionalidad>
     </actor>
     <actor>
       <nombre>Clark Gable</nombre>
       <nacionalidad>EEUU</nacionalidad>
     </actor>
  </actores>
 </pelicula>
 <pelicula>
   <titulo>Rebeca</titulo>
   <anno>1940</anno>
   <actores>
     <actor>
       <nombre>Joan Fontaine</nombre>
       <nacionalidad>EEUU</nacionalidad>
     </actor>
     <actor>
       <nombre>Laurence Olivier</nombre>
       <nacionalidad>Inglaterra</nacionalidad>
     </actor>
     <actor>
       <nombre>George Sanders</nombre>
       <nacionalidad>EEUU</nacionalidad>
     </actor>
  </actores>
 </pelicula>
</raiz>
--------------------------------------------------------------------
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
</head>
<body>
<?php
// **********************************************
function displayChildrenRecursive($xmlObj,$depth=0) {
    foreach($xmlObj->children() as $child)    {
        echo "<br>";
        echo str_repeat("&nbsp;&nbsp;",$depth)."<strong>".$child->getName()."</strong>: ".$child;
        displayChildrenRecursive($child,$depth+1);
    }
}
$xml = simplexml_load_file("peliculas2.xml");
displayChildrenRecursive($xml);?>
</body>
</html>

Más información en: http://www.anerbarrena.com/php-simplexml-4382/

XML: Convertir un array a XML

function array_to_XML($data, $rootNodeName = 'results', $xml=NULL){
if ($xml == null){
$xml = simplexml_load_string("<?xml version='1.0' encoding='utf-8'?><$rootNodeName />");
}

foreach($data as $key => $value){
if (is_numeric($key)){
$key = "nodeId_". (string) $key;
}

if (is_array($value)){
$node = $xml->addChild($key);
array_to_XML($value, $rootNodeName, $node);
} else {
$value = htmlentities($value);
$xml->addChild($key, $value);
}
}
return html_entity_decode($xml->asXML());
}