Convierta JSON a XML y guarde XML

Estoy tratando de convertir JSON a XML y luego guardarlo usando JSON.NET en C # pero parece que no puedo conseguirlo.

Esto es lo que tengo:

using System.XML;
using Newtonsoft;

XmlDocument doc = (XmlDocument)Newtonsoft.Json.JsonConvert.DeserializeXmlNode(json);
XmlTextWriter writer = new XmlTextWriter("json.xml", null);
writer.Formatting = Formatting.Indented;
doc.Save(writer);

preguntado el 08 de enero de 11 a las 18:01

¿Qué no está funcionando? ¿Algún error? Excepciones? -

Encontré una excepción. A first chance exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.Net35.dll -

Eso significa que fue capturado y manejado por Json.NET. Aún no explicaste lo que no funciona. -

No guarda el archivo XML y no estoy seguro de si incluso convierte el JSON a XML. -

¿Has entrado en el código? ¿Inspeccionó las diferentes variables? La depuración es tu amiga. -

1 Respuestas

Probé tu código y funciona totalmente bien para mí. Según la documentación de DeserializeXmlNode esto definitivamente debería funcionar:

// { "?xml": { "@version": "1.0", "@standalone": "no" }, "root": { "person": [ { "@id": "1", "name": "Alan", "url": "http://www.google.com" }, { "@id": "2", "name": "Louis", "url": "http://www.yahoo.com" } ] } }
string json = "{ \"?xml\": { \"@version\": \"1.0\", \"@standalone\": \"no\" }, \"root\": { \"person\": [ { \"@id\": \"1\", \"name\": \"Alan\", \"url\": \"http://www.google.com\" }, { \"@id\": \"2\", \"name\": \"Louis\", \"url\": \"http://www.yahoo.com\" } ] } }";

System.Xml.XmlDocument xmlDocument = Newtonsoft.Json.JsonConvert.DeserializeXmlNode(json);
System.Xml.XmlTextWriter xmlTextWriter = new System.Xml.XmlTextWriter("json.xml", null);
xmlTextWriter.Formatting = System.Xml.Formatting.Indented;
xmlDocument.Save(xmlTextWriter);

//<?xml version="1.0" standalone="no"?>
//<root>
//  <person id="1">
//    <name>Alan</name>
//    <url>http://www.google.com</url>
//  </person>
//  <person id="2">
//    <name>Louis</name>
//    <url>http://www.yahoo.com</url>
//  </person>
//</root>

Pruebe su método con la cadena JSON anterior para verificar si funciona. Diría que tiene un problema con su JSON que no es válido.

Puede validar su JSON, por ejemplo, aquí:

Respondido 22 Feb 11, 21:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.