/// <summary> /// Convert XML to SVC from file table by table /// </summary> /// <param name="xmlfilepath">xml file path</param> /// <param name="csvpath">csv path</param> /// <param name="datatag">Table Name</param> /// <param name="arrange">Element or Attribute</param> /// <param name="rdelimit">Row separater</param> /// <param name="cdelimit">Column separater</param> public static void Convert(string xmlfilepath, string csvpath, string datatag, DataArrange arrange, RowDelimit rdelimit, ColumnDelimit cdelimit) { try { var builder = new StringBuilder(); var doc = XDocument.Load(xmlfilepath); FetchRowSeparater(rdelimit, out var rowSeparater); FetchColumnSeparater(cdelimit, out var columnseparater); foreach (var data in doc.Descendants(datatag)) { if (arrange == DataArrange.Element) { foreach (var xElement in data.Elements()) { builder.Append(xElement.Value); builder.Append(columnseparater); } } else { foreach (var xAttribute in data.Attributes()) { builder.Append(xAttribute.Value); builder.Append(columnseparater); } } // Remove the last Columnseparater builder.Remove(builder.Length - 1, 1); builder.Append(rowSeparater); } File.AppendAllText(csvpath, builder.ToString()); } catch (Exception exception) { throw new Exception("Convert fail", exception); } }
/// <summary> /// Convert XML to SVC By batch /// </summary> /// <param name="dataTable">Staging table</param> /// <param name="arrange"></param> /// <param name="rdelimit">Row separater</param> /// <param name="cdelimit">Column separater</param> public static void Convert(DataTable dataTable, DataArrange arrange, RowDelimit rdelimit, ColumnDelimit cdelimit) { try { // select SchemaLevel from [dbo].[ProductSchemaInfo] var dbLevel = "77"; foreach (DataRow data in dataTable.Rows) { var xmlString = data["row_data"].ToString(); long timeStamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(); Convert(xmlString, rdelimit, cdelimit, dbLevel, timeStamp.ToString()); } } catch (Exception exception) { throw new Exception("Convert fail", exception); } }