simplexmlelement new imprimir ejemplo array php xml simplexml

new - xml to array php



Usar SimpleXML para crear un objeto XML desde cero (3)

En PHP5, debe usar la clase de Modelo de Objeto de Documento en su lugar. Ejemplo:

$domDoc = new DOMDocument; $rootElt = $domDoc->createElement(''root''); $rootNode = $domDoc->appendChild($rootElt); $subElt = $domDoc->createElement(''foo''); $attr = $domDoc->createAttribute(''ah''); $attrVal = $domDoc->createTextNode(''OK''); $attr->appendChild($attrVal); $subElt->appendChild($attr); $subNode = $rootNode->appendChild($subElt); $textNode = $domDoc->createTextNode(''Wow, it works!''); $subNode->appendChild($textNode); echo htmlentities($domDoc->saveXML());

¿Es posible usar las funciones SimpleXML de PHP para crear un objeto XML desde cero? Al examinar la lista de funciones, hay formas de importar una cadena XML existente en un objeto que luego puede manipular, pero si solo quiero generar un objeto XML programáticamente desde cero, ¿cuál es la mejor manera de hacerlo?

Descubrí que puedes usar simplexml_load_string () y pasar la cadena de la raíz que quieras, y luego tienes un objeto que puedes manipular agregando elementos secundarios ... aunque esto parece una especie de truco, ya que tengo que de hecho, codifica un poco de XML en la cadena antes de que pueda cargarse.

Lo hice usando las funciones de DOMDocument , aunque es un poco confuso porque no estoy seguro de qué tiene que ver el DOM con la creación de un documento XML puro ... así que tal vez sea mal nombrado :-)


Por favor mira mi respuesta here . Como dreamwerx.myopenid.com señala, es posible hacer esto con SimpleXML , pero la extensión DOM sería la mejor y más flexible. Además, hay una tercera forma: usar XMLWriter . Es mucho más fácil de usar que el DOM y, por lo tanto, es mi forma preferida de escribir documentos XML desde cero.

$w=new XMLWriter(); $w->openMemory(); $w->startDocument(''1.0'',''UTF-8''); $w->startElement("root"); $w->writeAttribute("ah", "OK"); $w->text(''Wow, it works!''); $w->endElement(); echo htmlentities($w->outputMemory(true));

Dicho sea de paso: DOM significa D colorido Obligator M odel; esta es la API estandarizada en documentos XML.


Seguro que puede. P.ej.

<?php $newsXML = new SimpleXMLElement("<news></news>"); $newsXML->addAttribute(''newsPagePrefix'', ''value goes here''); $newsIntro = $newsXML->addChild(''content''); $newsIntro->addAttribute(''type'', ''latest''); Header(''Content-type: text/xml''); echo $newsXML->asXML(); ?>

Salida

<?xml version="1.0"?> <news newsPagePrefix="value goes here"> <content type="latest"/> </news>

Que te diviertas.