示例#1
0
    public static void FetchRowSeparater(RowDelimit delimit, out string separater)
    {
        switch (delimit)
        {
        case RowDelimit.NewLine:
        case RowDelimit.Default:
            separater = Environment.NewLine;
            break;

        case RowDelimit.Space:
            separater = " ";
            break;

        case RowDelimit.Dollar:
            separater = "$";
            break;

        case RowDelimit.Ambescent:
            separater = "&";
            break;

        default:
            separater = Environment.NewLine;
            break;
        }
    }
示例#2
0
        /// <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);
            }
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
    static void converttocsv(XDocument doc, string outputcsv, string datatag, RowDelimit rdelimit, ColumnDelimit cdelimit, bool outputheader)
    {
        StringBuilder builder      = new StringBuilder();
        string        Rowseparater = string.Empty;

        FetchRowSeparater(rdelimit, out Rowseparater);

        string Columnseparater = string.Empty;

        FetchColumnSeparater(cdelimit, out Columnseparater);

        if (outputheader == true)
        {
            foreach (XElement data in doc.Descendants(datatag))
            {
                bool first = true;
                foreach (XAttribute innerval in data.Attributes())
                {
                    if (first == true)
                    {
                        first = false;
                        if (seqence_no == true)
                        {
                            builder.Append("ROW_ID,");
                        }
                    }
                    else
                    {
                        builder.Append(Columnseparater);
                    }
                    builder.Append(innerval.Name);
                }
                builder.Append(Rowseparater);
                break;
            }
        }

        foreach (XElement data in doc.Descendants(datatag))
        {
            bool first = true;
            foreach (XAttribute innerval in data.Attributes())
            {
                if (first == true)
                {
                    first = false;
                    if (seqence_no == true)
                    {
                        builder.Append(row_id);
                        builder.Append(Columnseparater);
                        row_id++;
                    }
                }
                else
                {
                    builder.Append(Columnseparater);
                }
                builder.Append(innerval.Value);
            }
            builder.Append(Rowseparater);
        }

        File.AppendAllText(outputcsv, builder.ToString());
    }
示例#5
0
    static void converttoupx(XDocument doc, string outputcsv, string datatag, RowDelimit rdelimit, ColumnDelimit cdelimit, bool outputheader, ref Upx upx)
    {
        StringBuilder builder      = new StringBuilder();
        string        Rowseparater = string.Empty;

        FetchRowSeparater(rdelimit, out Rowseparater);

        string Columnseparater = string.Empty;

        FetchColumnSeparater(cdelimit, out Columnseparater);

        if (upx.startrectype63 == 0)
        {
            foreach (XElement data in doc.Descendants(datatag))
            {
                bool first = true;
                int  i     = 0;
                foreach (XAttribute innerval in data.Attributes())
                {
                    if (innerval.Name == "RecTypeCode63")
                    {
                        upx.startrectype63 = i;
                    }
                    if (innerval.Name == "RecTypeCode64")
                    {
                        upx.startrectype64 = i;
                    }
                    if (first == true)
                    {
                        first = false;
                    }
                    i++;
                }
                break;
            }
        }


        foreach (XElement data in doc.Descendants(datatag))
        {
            int  i     = 0;
            bool first = true;
            foreach (XAttribute innerval in data.Attributes())
            {
                if (upx.outputrectype60 == false && i < upx.startrectype63)
                {
                    if (first == true)
                    {
                        builder.Append("***1,13.0.0,20150421,XXXXXXX,OASIS,XXXXXXX,XXXXXX,UPX from LocFile,XXX,TBD,Hurricane,X,ML,USD,");
                        builder.Append(Rowseparater);
                        first = false;
                    }
                    else
                    {
                        builder.Append(Columnseparater);
                    }
                    builder.Append(innerval.Value);
                }
                if (upx.outputrectype60 == false && i == upx.startrectype63)
                {
                    upx.outputrectype60 = true;
                    builder.Append(Rowseparater);
                    first = true;
                }
                if (i >= upx.startrectype63 && i < upx.startrectype64)
                {
                    if (first == true)
                    {
                        first = false;
                    }
                    else
                    {
                        builder.Append(Columnseparater);
                    }
                    builder.Append(innerval.Value);
                }

                if (i == upx.startrectype64)
                {
                    builder.Append(Rowseparater);
                    first = true;
                }
                if (i >= upx.startrectype64)
                {
                    if (first == true)
                    {
                        first = false;
                    }
                    else
                    {
                        builder.Append(Columnseparater);
                    }
                    builder.Append(innerval.Value);
                }
                i++;
            }
            builder.Append(Rowseparater);
        }

        File.AppendAllText(outputcsv, builder.ToString());
    }
示例#6
0
        /// <summary>
        /// Convert XML to SVC row by row
        /// </summary>
        /// <param name="xmlString">XML with only one node</param>
        /// <param name="rdelimit">Row separater</param>
        /// <param name="cdelimit">Column separater</param>
        /// <param name="dbLevel"></param>
        /// <param name="timeStamp"></param>
        private static void Convert(string xmlString, RowDelimit rdelimit, ColumnDelimit cdelimit,
                                    string dbLevel,
                                    string timeStamp)
        {
            try
            {
                #region ReadXML

                var builder = new StringBuilder();
                var xDoc    = new XmlDocument();
                xDoc.LoadXml(xmlString);
                FetchRowSeparater(rdelimit, out var rowSeparater);
                FetchColumnSeparater(cdelimit, out var columnSeparater);
                // Set default Header separater to TabSpace.
                FetchColumnSeparater(ColumnDelimit.TabSpace, out var headerSeparater);
                var root = xDoc.FirstChild;

                string tableName;
                if (xDoc.DocumentElement != null)
                {
                    tableName = xDoc.DocumentElement.Name;
                }
                else
                {
                    throw new Exception("Incorrect XML format");
                }

                if (xDoc.FirstChild == null)
                {
                    return;
                }
                var site = xDoc.FirstChild["site_ref"]?.InnerText;

                #endregion

                #region Create folder and CSV file

                var          fileFlag   = false;
                const string folderName = @"C:\Development";
                var          pathString = Path.Combine(folderName, "SubFolder");
                Directory.CreateDirectory(pathString);

                //string fileName = System.IO.Path.GetRandomFileName();
                var fileName = tableName + dbLevel + site + timeStamp;
                pathString = Path.Combine(pathString, fileName);

                // Check that the file doesn't already exist. If it doesn't exist, create.
                if (!File.Exists(pathString))
                {
                    // Create file.
                    using (File.Create(pathString))
                    {
                        // First reading Flag.
                        fileFlag = true;
                    }
                }

                #endregion

                #region Write

                //Display the contents of the child nodes.
                if (root != null && root.HasChildNodes)
                {
                    // Write node name at first reading.
                    if (fileFlag)
                    {
                        for (int i = 0; i < root.ChildNodes.Count; i++)
                        {
                            builder.Append(root.ChildNodes[i]?.Name);
                            builder.Append(headerSeparater);
                        }

                        builder.Remove(builder.Length - 1, 1);
                        builder.Append(rowSeparater);
                    }

                    for (int i = 0; i < root.ChildNodes.Count; i++)
                    {
                        builder.Append(root.ChildNodes[i]?.InnerText);
                        builder.Append(columnSeparater);
                    }

                    builder.Remove(builder.Length - 1, 1);
                    builder.Append(rowSeparater);
                }

                File.AppendAllText(pathString, builder.ToString());

                #endregion
            }
            catch (Exception exception)
            {
                throw new Exception("Convert fail", exception);
            }
        }