Add APISocietyToolBox source files

This commit is contained in:
ashishkamat
2026-06-30 16:07:31 +05:30
parent 2ebd889236
commit 70e9c9ea8d
993 changed files with 36439 additions and 1 deletions
@@ -0,0 +1,241 @@
using Newtonsoft.Json.Linq;
using System;
using System.Text;
using System.Text.Json;
using System.Xml.Linq;
namespace APISocietyToolBox.Functions
{
public class ConvertFunctions
{
public static string ConvertJsonToXml(string jsonString)
{
// Parse JSON
var jsonDocument = JsonDocument.Parse(jsonString);
// Create an XML document
var xmlDocument = new XDocument(
new XElement("Root",
ConvertJsonElementToXml(jsonDocument.RootElement)
)
);
return xmlDocument.ToString();
}
static XElement ConvertJsonElementToXml(JsonElement jsonElement)
{
var element = new XElement(jsonElement.ValueKind.ToString());
switch (jsonElement.ValueKind)
{
case JsonValueKind.Object:
foreach (var property in jsonElement.EnumerateObject())
{
element.Add(new XElement(property.Name, ConvertJsonElementToXml(property.Value)));
}
break;
case JsonValueKind.Array:
foreach (var item in jsonElement.EnumerateArray())
{
element.Add(ConvertJsonElementToXml(item));
}
break;
case JsonValueKind.String:
case JsonValueKind.Number:
case JsonValueKind.True:
case JsonValueKind.False:
element.Value = jsonElement.GetRawText();
break;
case JsonValueKind.Null:
// Handle null values if needed
break;
}
return element;
}
public static string ConvertJsonToXmlR2(string jsonString, string rootElementName, string objectElementName)
{
// Parse JSON to JObject
JObject jsonObject = JObject.Parse(jsonString);
// Create the root XML element with the user-defined name
XElement rootElement = new XElement(rootElementName);
// Create the object XML element with the user-defined name
XElement objectElement = new XElement(objectElementName);
// Convert JSON properties to XML elements with values
foreach (var property in jsonObject.Properties())
{
// Create XML element and add the value
XElement element = new XElement(property.Name, (property.Value.ToString().Replace("/", "/")));
// Add the element to the object element
objectElement.Add(element);
}
// Add the object element to the root element
rootElement.Add(objectElement);
// Convert the XElement to an XML string
string xmlString = rootElement.ToString();
return xmlString;
}
public static string ConvertJsonToXmlR3(string jsonString, string rootElementName, string objectElementName)
{
// Parse JSON to JObject
JObject jsonObject = JObject.Parse(jsonString);
// Create the root XML element with the user-defined name
XElement rootElement = new XElement(rootElementName);
// Convert JSON properties to XML elements with values
foreach (var property in jsonObject.Properties())
{
if (property.Name == "TransactionDate" && property.Value.Type == JTokenType.Date)
{
// Special handling for TransactionDate property with date type
XElement dateElement = new XElement(SanitizeElementName(property.Name), ((DateTime)property.Value).ToString("yyyy-MM-ddTHH:mm:ss"));
rootElement.Add(dateElement);
}
else if (property.Name == "itemDetails" || property.Name == "ledgerDetails" || property.Name == "batchDetails" || property.Name == "billDetails" || property.Name == "otherDetails")
{
// Handle arrays separately
XElement arrayElement = new XElement(SanitizeElementName(property.Name + "Models"));
rootElement.Add(arrayElement);
foreach (var arrayItem in property.Value)
{
XElement objectElement = new XElement(objectElementName);
ConvertJTokenToXml(arrayItem, objectElement);
arrayElement.Add(objectElement);
}
}
else if (property.Value.Type == JTokenType.Array)
{
// If the property value is an array, recursively convert it to XML
rootElement.Add(ConvertArrayToXml(property, objectElementName));
}
else if (property.Value.Type == JTokenType.Object)
{
// If the property value is an object, recursively convert it to XML
XElement objectElement = new XElement(objectElementName);
ConvertJTokenToXml(property.Value, objectElement);
rootElement.Add(objectElement);
}
else
{
// Create XML element and add the value
XElement element = new XElement(SanitizeElementName(property.Name), property.Value.ToString());
rootElement.Add(element);
}
}
// Convert the XElement to an XML string
string xmlString = rootElement.ToString();
return xmlString;
}
public static string ConvertJsonArrayToXmlR1(string jsonArray, string rootElementName, string itemElementName)
{
// Parse JSON array to JArray
JArray array = JArray.Parse(jsonArray);
// Create the root XML element with the user-defined name
XElement rootElement = new XElement(rootElementName);
// Convert each JSON object in the array to XML elements
foreach (JObject item in array)
{
// Create an item element for each item in the array
XElement itemElement = new XElement(itemElementName);
// Convert JSON properties to XML elements with values for each item
foreach (var property in item.Properties())
{
// Add property value to XML
itemElement.Add(new XElement(property.Name, property.Value.ToString()));
}
// Add the item element to the root element
rootElement.Add(itemElement);
}
// Convert the XElement to an XML string
string xmlString = rootElement.ToString();
return xmlString;
}
// Helper method to recursively convert JToken to XML
private static XElement ConvertJTokenToXml(JToken token, XElement parentElement)
{
if (token.Type == JTokenType.Object)
{
foreach (var property in token.Children<JProperty>())
{
XElement childElement = new XElement(SanitizeElementName(property.Name));
parentElement.Add(childElement);
ConvertJTokenToXml(property.Value, childElement);
}
}
else if (token.Type == JTokenType.Array)
{
foreach (var arrayItem in token)
{
XElement objectElement = new XElement(parentElement.Name);
ConvertJTokenToXml(arrayItem, objectElement);
parentElement.Add(objectElement);
}
}
else
{
parentElement.Value = token.ToString();
}
return parentElement;
}
// Helper method to convert JToken array to XML
private static XElement ConvertArrayToXml(JProperty property, string objectElementName)
{
XElement arrayElement = new XElement(SanitizeElementName(property.Name));
foreach (var arrayItem in property.Value)
{
XElement objectElement = new XElement(objectElementName);
ConvertJTokenToXml(arrayItem, objectElement);
arrayElement.Add(objectElement);
}
return arrayElement;
}
// Helper method to sanitize XML element names
private static string SanitizeElementName(string name)
{
// Check if the name is not null or empty before replacing characters
if (!string.IsNullOrEmpty(name))
{
// Replace invalid characters with underscore
return name.Replace(" ", "_"); // You can adjust this sanitization logic as needed
}
else
{
// If the name is null or empty, return a default name or handle it according to your requirements
return "UnknownElement";
}
}
}
}