using System.Collections.Generic;
using System.Diagnostics;
using System.ComponentModel;
using System.Globalization;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
var xml = @"<DataEntries>
<Data Name=""Direction"">in</Data>
<Data Name=""SourceAddress"">222.0.0.252</Data>
<Data Name=""SourcePort"">5355</Data>
<Data Name=""DestAddress"">192.168.1.24</Data>
internal static void Test()
Console.WriteLine("Original XML: ");
Console.WriteLine(GetXml());
TestXmlDocument(GetXml());
internal static void TestXmlDocument(string NewXML)
XmlDocument XMLDoc = new XmlDocument();
foreach (XmlElement entry in XMLDoc.SelectNodes("//DataEntries"))
var data = entry.ChildNodes.OfType<XmlElement>().ToList();
var e = XMLDoc.CreateElement(d.Attributes["Name"].Value);
e.InnerText = d.InnerText;
string EventDataJSON = JsonConvert.SerializeXmlNode(XMLDoc, 0, true);
Console.WriteLine("Result of pre-processing with XmlDocument: ");
Console.WriteLine(JToken.Parse(EventDataJSON));
internal static void TestLinq(string NewXML)
var doc = XDocument.Parse(NewXML);
foreach (var entry in doc.Descendants("DataEntries"))
var data = entry.Elements("Data").ToList();
entry.Add(new XElement((string)d.Attribute("Name"), d.Value));
string EventDataJSON = JsonConvert.SerializeXNode(doc, 0, true);
Console.WriteLine("Result of pre-processing with LINQ to XML: ");
Console.WriteLine(JToken.Parse(EventDataJSON));
public static void Main()