2010-12-23 40 views
11

Estoy tratando de usar un documento PHP para construir un documento XML (para AJAX) usando la clase incorporada de PHP 5 SimpleXMLElement. Quiero comenzar con una lista en blanco y construir el elemento XML por elemento, pero no he encontrado forma de construir un SimpleXMLElement sin comenzar desde un fragmento de código XML existente. No pude pasar con éxito una cadena en blanco ("") al constructor SimpleXMLElement, por lo que actualmente paso el XML para la etiqueta más externa, y luego construyo desde allí. Aquí está mi código:¿Cómo creo un SimpleXMLElement vacío/en blanco en PHP?

// Start with a "blank" XML document. 
$xml = new SimpleXMLElement("<feature></feature>"); 

// Add various children and attributes to the main tag. 
$xml->addAttribute("id", $id); 
$xml->addChild("title", $feature['title']); 
$xml->addChild("summary", $feature['summary']); 
// ... 

// After the document has been constructed, echo out the XML. 
echo $xml->asXML(); 

¿Hay alguna manera más clara de hacerlo?

+1

Probablemente puedas crear los elementos usando DOMDocument y convertir eso a SimpleXML, pero eso es aún más desordenado ... – derekerdmann

+2

La clave está en el nombre de la clase, estás creando elementos SimpleXML *. En cuanto a ser más limpio, el 'simplexml_import_dom()' no es necesario. Aparte de eso, si desea construir el documento por elementos/atributos individuales, entonces lo que tiene está bien. – salathe

+0

Malo en lo de 'simplexml_import_dom()'. Era un código viejo. – andrewtc

Respuesta

5

Como Salathe mencionado:

La idea es en el nombre de la clase, que está creando SimpleXML elementos.

Tiene sentido para mí ahora que un SimpleXMLElement no puede estar "vacío". Debe ser un elemento XML válido, lo que implica tener un nombre de etiqueta y etiquetas de apertura y cierre (por ejemplo, <feature></feature> o <body></body>).

Esto parece implicar que SimpleXMLElement se creó para analizar, en lugar de compilar, documentos XML. Dicho esto, me pareció muy fácil construir un documento desde cero. La clase hace muchas cosas agradables automáticamente, incluyendo mantener todo compacto y generar el número de versión XML en la parte superior (<?xml version="1.0"?>).

Recomendaría este enfoque a cualquiera que necesite usar PHP para construir pequeños documentos XML. Es mejor repetir las etiquetas como cadenas cualquier día.

¡Gracias a todos por sus comentarios!

+0

'haciendo eco de las etiquetas' No me digas que has hecho eso :) –

+0

@CamiloMartin funciona como un encanto – mandza