Code snippet to load a XML document, increment an attribute and store it again.
My XML looks like:
<?xml version="1.0" encoding="ISO-8859-1"?>
<doctypes counter="16">
<doctype id="d1">
<name>Carta</name>
<acro>CA</acro>
</doctype>
...
</doctypes>
I want to retrieve the counter attribute, increment it, and store the new document at the end:
<?php
$document = simplexml_load_file("mydoc.xml");
$cont = (integer) $document['counter'];
$document['counter'] = $cont+1;
$document->asXML("mydoc.xml");
?>
SimpleXMLElement::asXML
(PHP 5 >= 5.0.1)
SimpleXMLElement::asXML — Retorna un string XML correcto basado en un elemento SimpleXML
Descripción
El método asXML formatea los datos del objeto padre en XML versión 1.0.
Parámetros
- filename
-
Si se especifica, la función escribe los datos al fichero en vez de retornarlo.
Valores devueltos
Si no se especifica filename, esta función retorna un string si no hay errores y FALSE si lo hay. Si se especifica el parámetro, retorna TRUE si el fichero se escribió correctamente y FALSE en caso contrario.
Ejemplos
Example #1 Retornar XML
<?php
$string = <<<XML
<a>
<b>
<c>texto</c>
<c>cosas</c>
</b>
<d>
<c>codigo</c>
</d>
</a>
XML;
$xml = new SimpleXMLElement($string);
echo $xml->asXML();
?>
El resultado del ejemplo sería:
<?xml version="1.0"?> <a> <b> <c>texto</c> <c>cosas</c> </b> <d> <c>codigo</c> </d> </a>
asXML también trabaja con resultados Xpath:
Example #2 Usando asXML() en resultados SimpleXMLElement::xpath()
<?php
// Continuación del ejemplo XML anterior.
/* Buscar <a><b><c> */
$resultado = $xml->xpath('/a/b/c');
while(list( , $nodo) = each($resultado)) {
echo $nodo->asXML(); // <c>texto</c> and <c>cosas</c>
}
?>
El resultado del ejemplo sería:
<c>texto</c><c>cosas</c>
jcr at di dot uminho dot pt
25-Jan-2011 10:32
