c# – Trying to convert XML to JSON with %3D and %26 characters
You can UrlDecode it and get query parameters. ie:
void Main()
{
var urlString = (string)XElement
.Parse(myxml)
.Element("row")
.Attribute("url");
var query = new Uri("http://myurl/"+HttpUtility.UrlDecode(urlString)).Query;
var parameters = HttpUtility.ParseQueryString(query);
foreach (var key in parameters.AllKeys)
{
Console.WriteLine($"Key:{key}, Value:{parameters[key]}");
}
}
static readonly string myxml = "<xml><row ID=\"61\" url=\"Page.aspx%3fstepid%3dMyStepID%26ID%3d65454%26UserID%3d2542240%26process%3dMyProcess\"></row></xml>";
Output:
Key:stepid, Value:MyStepID
Key:ID, Value:65454
Key:UserID, Value:2542240
Key:process, Value:MyProcess
EDIT: I missed that you want to convert that to JSON. Then you could use Newtonsoft from Nuget:
void Main()
{
var urlString = (string)XElement
.Parse(myxml)
.Element("row")
.Attribute("url");
var query = new Uri("http://myurl/"+HttpUtility.UrlDecode(urlString)).Query;
var parameters = HttpUtility.ParseQueryString(query);
Dictionary<string, object> dic = new Dictionary<string, object>();
foreach (var key in parameters.AllKeys)
{
Console.WriteLine($"Key:{key}, Value:{parameters[key]}");
dic.Add(key, parameters[key]);
}
var json = JsonConvert.SerializeObject(dic);
}
static readonly string myxml = "<xml><row ID=\"61\" url=\"Page.aspx%3fstepid%3dMyStepID%26ID%3d65454%26UserID%3d2542240%26process%3dMyProcess\"></row></xml>";
Read more here: Source link