<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Curso_POO_PHP_SimpleXML</id>
	<title>Curso POO PHP SimpleXML - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Curso_POO_PHP_SimpleXML"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_SimpleXML&amp;action=history"/>
	<updated>2026-10-22T06:43:36Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_SimpleXML&amp;diff=36625&amp;oldid=prev</id>
		<title>Vlourido: /* Modificar o XML */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_SimpleXML&amp;diff=36625&amp;oldid=prev"/>
		<updated>2013-07-24T18:23:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Modificar o XML&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== SimpleXML ==&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/book.simplexml.php extensión SimpleXML]&amp;#039;&amp;#039;&amp;#039; seguramente a forma máis sinxela de traballar con documentos XML dende PHP. Carga un ficheiro XML en memoria, e representa o seu contido como unha xerarquía de obxectos. Nas versións actuais da linguaxe ven habilitada por defecto.&lt;br /&gt;
&lt;br /&gt;
=== Cargar un documento XML ===&lt;br /&gt;
&lt;br /&gt;
Para cargar en memoria un documento XML empregando SimpleXML, podemos:&lt;br /&gt;
&lt;br /&gt;
* Empregar unha das funcións &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/function.simplexml-load-file.php simplexml_load_file]&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/function.simplexml-load-string.php simplexml_load_string]&amp;#039;&amp;#039;&amp;#039; ou &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/function.simplexml-import-dom.php simplexml_import_dom]&amp;#039;&amp;#039;&amp;#039; dependendo da orixe do documento XML (un ficheiro, unha cadea de texto ou un nodo DOM respectivamente). Todas elas devolven un obxecto da clase &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.simplexmlelement.php SimpleXMLElement]&amp;#039;&amp;#039;&amp;#039; que representa o elemento raíz do documento XML.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = simplexml_load_file(&amp;#039;exemplo.xml&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Empregar o constructor da clase SimpleXMLElement, indicando como primeiro parámetro a orixe do documento XML (unha cadea de texto, unha ruta a un ficheiro ou unha URL), e como terceiro &amp;#039;&amp;#039;true&amp;#039;&amp;#039; se a orixe é un ficheiro ou unha URL. O obxecto instanciado representa, como no caso anterior, elemento raíz do documento XML.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new SimpleXMLElement(&amp;#039;exemplo.xml&amp;#039;,0,true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acceder ao contido dun documento XML ===&lt;br /&gt;
&lt;br /&gt;
Unha vez cargado en memoria o documento XML, podemos empregar as seguintes técnicas para acceder ao seu contido a partires do obxecto xerado:&lt;br /&gt;
&lt;br /&gt;
*Aos &amp;#039;&amp;#039;&amp;#039;fillos dun elemento&amp;#039;&amp;#039;&amp;#039; accédese co operador frecha &amp;#039;&amp;#039;&amp;#039;-&amp;gt;&amp;#039;&amp;#039;&amp;#039;. Se existe máis de un fillo co mesmo nome, empréganse arrays. Por exemplo, para acceder ao segundo actor do [[Curso_POO_PHP_e_XML#Documento_XML_de_exemplo|documento de exemplo]] faríamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$actor2 = $xml-&amp;gt;actor[1];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Aos &amp;#039;&amp;#039;&amp;#039;atributos dun elemento&amp;#039;&amp;#039;&amp;#039; accédese empregando arrays asociativos nos que o nome do atributo pasa a ser o nome do elemento no array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$actor2 = $xml-&amp;gt;actor[1];&lt;br /&gt;
echo &amp;quot;O ID do actor é &amp;quot; . $actor2[&amp;#039;id&amp;#039;];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Ao &amp;#039;&amp;#039;&amp;#039;contido dun elemento&amp;#039;&amp;#039;&amp;#039; accédese directamente co nome do elemento.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$actor2 = $xml-&amp;gt;actor[1];&lt;br /&gt;
echo &amp;quot;O nome do actor é &amp;quot; . $actor2-&amp;gt;nome;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Xogos de caracteres ===&lt;br /&gt;
&lt;br /&gt;
Cando traballamos con documentos XML debemos ser conscientes dos xogos de caracteres que estamos a empregar en todos os ficheiros:&lt;br /&gt;
&lt;br /&gt;
*O &amp;#039;&amp;#039;&amp;#039;documento XML&amp;#039;&amp;#039;&amp;#039; ten un xogo de caracteres que figura na súa cabeceira.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*A &amp;#039;&amp;#039;&amp;#039;páxina web HTML&amp;#039;&amp;#039;&amp;#039; que estamos a xerar tamén depende do xogo de caracteres que esteamos a empregar, e defínese nunha etiqueta &amp;#039;&amp;#039;&amp;lt;meta&amp;gt;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Os &amp;#039;&amp;#039;&amp;#039;scripts PHP&amp;#039;&amp;#039;&amp;#039; da nosa aplicación web tamén se almacenan no xogo de caracteres que define o editor que estemos a empregar.&lt;br /&gt;
&lt;br /&gt;
É unha boa práctica empregar sempre o mesmo xogo de caracteres, e moi recomendable que sexa &amp;#039;&amp;#039;&amp;#039;UTF-8&amp;#039;&amp;#039;&amp;#039;. Cando os xogos de caracteres non coinciden, deberemos facer transformacións para adaptalos.&lt;br /&gt;
&lt;br /&gt;
Por exemplo, se o documento XML atópase en ISO-8859-1 e queremos amosar o seu contido nunha páxina codificada en UTF-8, deberemos empregar a función &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/function.utf8-encode.php utf8-encode]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;O nome do actor é &amp;quot; . utf8-encode($actor2-&amp;gt;nome);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se estamos a xerar unha páxina UTF-8 dende un script PHP almacenado noutro xogo de caracteres, deberemos empregar a función &amp;#039;&amp;#039;utf8-encode&amp;#039;&amp;#039; incluso para as cadeas de texto que amosemos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
echo utf8-encode(&amp;quot;O nome do actor é &amp;quot;) . utf8-encode($actor2-&amp;gt;nome);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E de forma semellante, se traballamos cun documento XML en UTF-8 dende un script PHP xerado noutro xogo de caracteres, deberemos adaptar incluso os nomes dos elementos e atributos XML cos que traballemos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
echo $xml[utf8_encode(&amp;#039;data_creación&amp;#039;)];&lt;br /&gt;
echo $xml-&amp;gt;{utf8_encode(&amp;#039;película&amp;#039;)}[0]-&amp;gt;{utf8_encode(&amp;#039;xénero&amp;#039;)};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modificar o contido dun documento XML ===&lt;br /&gt;
&lt;br /&gt;
Empregando SimpleXML tamén é posible modificar o contido existente nun documento XML, ou mesmo engadir novo contido.&lt;br /&gt;
&lt;br /&gt;
Para &amp;#039;&amp;#039;&amp;#039;modificar un contido&amp;#039;&amp;#039;&amp;#039; (elemento ou atributo) existente, simplemente facemos os cambios sobre o obxecto SimpleXMLElement que o representa.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml-&amp;gt;película[0]-&amp;gt;título = &amp;quot;O Santo&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se o que queremos é &amp;#039;&amp;#039;&amp;#039;engadir novos elementos&amp;#039;&amp;#039;&amp;#039;, empregamos o método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/simplexmlelement.addchild.php addChild]&amp;#039;&amp;#039;&amp;#039; sobre o obxecto que representa ao elemento pai.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml-&amp;gt;actor[1]-&amp;gt;addChild(&amp;#039;url&amp;#039;,&amp;#039;http://www.imdb.com/name/nm0000174/&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E de forma semellante, para &amp;#039;&amp;#039;&amp;#039;engadir novos atributos&amp;#039;&amp;#039;&amp;#039; empregamos o método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/simplexmlelement.addattribute.php addAttribute]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml-&amp;gt;addAttribute(&amp;#039;versión&amp;#039;, &amp;#039;1.0&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Estes cambios almacénanse en memoria. Se queremos &amp;#039;&amp;#039;&amp;#039;gardalos nun ficheiro&amp;#039;&amp;#039;&amp;#039; (no orixinal ou noutro calquera), teremos que empregar o método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/simplexmlelement.asxml.php asXML]&amp;#039;&amp;#039;&amp;#039;, que xera unha cadea de texto a partires dun nodo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Amosa o documento XML&lt;br /&gt;
echo $xml-&amp;gt;asXML();&lt;br /&gt;
// Garda o documento XML nun ficheiro&lt;br /&gt;
$xml-&amp;gt;asXML(&amp;#039;exemplo.xml&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Vlourido|Víctor Lourido]] 02:19 24 jul 2013 (CEST)&lt;/div&gt;</summary>
		<author><name>Vlourido</name></author>
	</entry>
</feed>