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