How to avoid the ROOT Element when parsing from XML to JSON in C#
JSON.Net has a SerializeXmlNode()
method that can do exactly what you want. Simply pass true
to the omitRootObject
parameter.Observe:
string xmlPerson = @"<PersonDefinition><Person><name>Nicolas</name><age>22</age></Person><Person><name>Pankaj</name><age>25</age></Person></PersonDefinition>";XmlDocument docPerson = new XmlDocument();docPerson.LoadXml(xmlPerson);string json = JsonConvert.SerializeXmlNode(docPerson, Formatting.None, true);Console.WriteLine(json);
Output:
{"Person":[{"name":"Nicolas","age":"22"},{"name":"Pankaj","age":"25"}]}
string xml = "<PersonDefinition><Person><name>Nicolas</name><age>22</age></Person><Person><name>Pankaj</name><age>25</age></Person></PersonDefinition>";XmlSerializer xmlSerializer = new XmlSerializer(typeof(Person[]), new XmlRootAttribute("PersonDefinition"));JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();using (TextReader reader = new StringReader(xml)){ Person[] people = xmlSerializer.Deserialize(reader) as Person[]; string json = jsonSerializer.Serialize(new Person());}
Use some kind of variation of this.