¿hay alguna forma de convertir json a xml en PHP? Sé que xml to json es muy posible.¿Hay alguna forma de convertir json a xml en PHP?
Respuesta
Depende de cómo exactamente quiere que se vea XML. Intentaría una combinación de json_decode()
y PEAR::XML_Serializer
(more info and examples on sitepoint.com).
require_once 'XML/Serializer.php';
$data = json_decode($json, true)
// An array of serializer options
$serializer_options = array (
'addDecl' => TRUE,
'encoding' => 'ISO-8859-1',
'indent' => ' ',
'rootName' => 'json',
'mode' => 'simplexml'
);
$Serializer = &new XML_Serializer($serializer_options);
$status = $Serializer->serialize($data);
if (PEAR::isError($status)) die($status->getMessage());
echo '<pre>';
echo htmlspecialchars($Serializer->getSerializedData());
echo '</pre>';
(código no probado - pero se entiende la idea)
Ack, ya me ganaron por medio minuto.Dejaré el mío de todos modos, es un enfoque ligeramente diferente. –
Si usted está dispuesto a utilizar el XML Serializer de PERA, puede convertir el JSON a un objeto PHP y entonces el objeto a XML en PHP dos sencillos pasos:
include("XML/Serializer.php");
function json_to_xml($json) {
$serializer = new XML_Serializer();
$obj = json_decode($json);
if ($serializer->serialize($obj)) {
return $serializer->getSerializedData();
}
else {
return null;
}
}
abrir una grieta en el JSON con json_decode
, y lo atraviesan para generar XML lo desea.
En caso de que se lo pregunte, no existe un mapeo canónico entre JSON y XML, por lo que debe escribir el código de generación de XML usted mismo, según las necesidades de su aplicación.
que combinan las dos sugerencias anteriores en:
/**
* Convert JSON to XML
* @param string - json
* @return string - XML
*/
function json_to_xml($json)
{
include_once("XML/Serializer.php");
$options = array (
'addDecl' => TRUE,
'encoding' => 'UTF-8',
'indent' => ' ',
'rootName' => 'json',
'mode' => 'simplexml'
);
$serializer = new XML_Serializer($options);
$obj = json_decode($json);
if ($serializer->serialize($obj)) {
return $serializer->getSerializedData();
} else {
return null;
}
}
Perfecto para mí Cheers – wired00
Un approch nativa podría ser
function json_to_xml($obj){
$str = "";
if(is_null($obj))
return "<null/>";
elseif(is_array($obj)) {
//a list is a hash with 'simple' incremental keys
$is_list = array_keys($obj) == array_keys(array_values($obj));
if(!$is_list) {
$str.= "<hash>";
foreach($obj as $k=>$v)
$str.="<item key=\"$k\">".json_to_xml($v)."</item>".CRLF;
$str .= "</hash>";
} else {
$str.= "<list>";
foreach($obj as $v)
$str.="<item>".json_to_xml($v)."</item>".CRLF;
$str .= "</list>";
}
return $str;
} elseif(is_string($obj)) {
return htmlspecialchars($obj) != $obj ? "<![CDATA[$obj]]>" : $obj;
} elseif(is_scalar($obj))
return $obj;
else
throw new Exception("Unsupported type $obj");
}
Buen guión, gracias. – Zsolti
Otra opción sería utilizar un JSON streaming parser.
Usar un analizador streamer sería útil si desea omitir el gráfico de objeto intermedio creado por PHP al usar json_decode
. Por ejemplo, cuando tiene un documento JSON grande y la memoria es un problema, puede generar el XML con XMLWriter
directamente mientras lee el documento con el analizador de transmisión.
Un ejemplo sería https://github.com/salsify/jsonstreamingparser
$writer = new XMLWriter;
$xml->openURI('file.xml');
$listener = new JSON2XML($writer); // you need to write the JSON2XML listener
$stream = fopen('doc.json', 'r');
try {
$parser = new JsonStreamingParser_Parser($stream, $listener);
$parser->parse();
} catch (Exception $e) {
fclose($stream);
throw $e;
}
El JSON2XML oyente tendría que poner en práctica el Listener interface:
interface JsonStreamingParser_Listener
{
public function start_document();
public function end_document();
public function start_object();
public function end_object();
public function start_array();
public function end_array();
public function key($key);
public function value($value);
}
En tiempo de ejecución, el oyente recibirá los diversos eventos del analizador, por ejemplo, cuando el analizador encuentra un objeto, enviará los datos al método start_object()
. Cuando encuentre una matriz, activará start_array()
y así sucesivamente. En esos métodos, debe delegar los valores a los métodos apropiados en el XMLWriter
, p. start_element()
y así sucesivamente.
Descargo de responsabilidad: No estoy afiliado con el autor, ni he usado la herramienta antes. Escogí esta biblioteca porque la API parecía lo suficientemente simple como para ilustrar cómo usar un analizador JSON basado en eventos.
- 1. Forma más rápida de convertir XML a JSON en Java
- 2. Convertir XML a formato JSON
- 3. ¿Cómo puedo convertir JSON a XML en Ruby?
- 4. PHP JSON o Matriz a XML
- 5. ¿Hay alguna forma de convertir fácilmente el código de Ruby a PHP?
- 6. cómo convertir XML a JSON usando jQuery
- 7. ¿Hay alguna forma de cargar json desde un subdominio?
- 8. Jackson: ¿hay alguna forma de serializar POJO directamente a treemodel?
- 9. ¿Existe alguna forma rápida de convertir objetos Java xml en objetos Scala xml?
- 10. ¿hay alguna manera simple de convertir mi objeto XML a String en java?
- 11. ¿Cómo puedo convertir Xml a Json y viceversa en C#
- 12. ¿Hay alguna forma de detectar matrices circulares en PHP puro?
- 13. script php para convertir xml a dtd
- 14. ¿Hay alguna forma de obtener XML de elemento por atributo?
- 15. ¿Hay alguna forma de escribir aplicaciones de Android en PHP?
- 16. Biblioteca PHP para convertir JSON a CSV?
- 17. ¿Hay un convertidor de JSON a XML en línea?
- 18. ¿Hay alguna forma de compartir objetos entre páginas de php?
- 19. Cómo convertir XML (SOAP) a objeto JSON por JavaScript
- 20. cómo convertir un json a un objeto php en symfony2?
- 21. ¿Hay alguna forma de convertir un diccionario a String a mano?
- 22. Conversión dinámica de XML a JSON
- 23. convertir resultado mysqli a json
- 24. ¿Hay alguna herramienta para generar un esquema JSON desde un esquema XML a través de Java?
- 25. ¿Hay alguna forma de convertir enteros a bools en go o viceversa?
- 26. ¿Hay alguna forma de que PHP detecte una imagen dañada?
- 27. Convertir objeto Scala a XML
- 28. Método más simple para convertir Json a Xml
- 29. ¿Existe alguna forma declarativa de analizar objetos XML a Java?
- 30. ¿Hay alguna herramienta para convertir los informes Emma XML al formato XML de Cobertura?
Y aún más importante: ¿Por qué querrías hacer eso alguna vez? – NikiC
'$ xml =" ";' (Haga una pregunta tonta ...) –
salathe
El Zend Framework tiene un [componente] que funciona muy bien (http://framework.zend.com /manual/en/zend.json.xml2json.html) para esto. – markus