public override void createData(BDOCExcelLine excelLine)
 {
     //Pour les donnees
     if (excelLine.dataTypeBDOC != "Entité")
     {
         FinalTXTData += "*" + "\r\n";
         FinalTXTData += excelLine.dataName + "\r\n";
         FinalTXTData += excelLine.dataDescription + "\r\n";
         FinalTXTData += excelLine.dataLong + "\r\n";
         switch (excelLine.dataType)
         {
             case "STRING":
                 FinalTXTData += "0";
                 break;
             case "CHAR":
                 FinalTXTData += "1";
                 break;
             case "INTEGER":
                 FinalTXTData += "2";
                 break;
             case "REAL":
                 FinalTXTData += "3";
                 break;
         }
         FinalTXTData += "\r\n";
     }
 }
        public override void createEntity(BDOCExcelLine excelLine)
        {
            //pour les entities
            if (excelLine.dataTypeBDOC == "Entité" && excelLine.dataName != "FLUX" && excelLine.dataLevel != "0")
            {
                if (this.lastObjectInserted == "ENTITY")
                    FinalTXTEntity = FinalTXTEntity.Substring(0, FinalTXTEntity.LastIndexOf("*"));

                FinalTXTEntity += "*" + "\r\n";
                FinalTXTEntity += excelLine.dataName + "\r\n";
                FinalTXTEntity += excelLine.dataDescription + "\r\n";
                FinalTXTEntity += "0" + "\r\n"; //functional entity
                FinalTXTEntity += ((excelLine.dataIterative == "Non") ? "0" : "1") + "\r\n";
                FinalTXTEntity += "0" + "\r\n"; //gestion d'habilitation

                this.lastObjectInserted = "ENTITY";
                if (excelLine.dataName.IndexOf("LIST_") == 0)
                {
                    if (excelLine.dataName.Length > 18)
                        FinalTXTEntity += "OCCURRENCES_" + excelLine.dataName.Substring(0, 18) + "\r\n";
                    else
                        FinalTXTEntity += "OCCURRENCES_" + excelLine.dataName + "\r\n";
                }
            }
            if (excelLine.dataTypeBDOC != "Entité")
            {
                FinalTXTEntity += excelLine.dataName + "\r\n";
                this.lastObjectInserted = "DATA";
            }
            //---------------------------------------
        }
        public override void createEntity(BDOCExcelLine excelLine)
        {
            //pour les entities
            if (excelLine.dataTypeBDOC == "Entité" && excelLine.dataName != "FLUX" && excelLine.dataLevel != "0")
            {
                if (this.lastObjectInserted == "ENTITY")
                    childNodeEntities.RemoveChild(entityNode);

                entityNode = this.xmlDoc.CreateElement("entity");
                entityNode.SetAttribute("name", excelLine.dataName);
                entityNode.SetAttribute("iterative", (excelLine.dataIterative == "Non") ? "false" : "true");
                childNodeEntities.AppendChild(entityNode);

                //description de l entité
                XmlElement streamNodeDesc = xmlDoc.CreateElement("description");
                XmlText textNodeDesc = xmlDoc.CreateTextNode("description");
                textNodeDesc.Value = excelLine.dataDescription;
                streamNodeDesc.AppendChild(textNodeDesc);
                entityNode.AppendChild(streamNodeDesc);

                this.lastObjectInserted = "ENTITY";
                if (excelLine.dataName.IndexOf("LIST_") == 0)
                {
                    XmlElement dataEntityNode = xmlDoc.CreateElement("entityData");
                    XmlElement childNode2 = xmlDoc.CreateElement("description");
                    XmlText textNode = xmlDoc.CreateTextNode(excelLine.dataName);
                    if (excelLine.dataName.Length > 18)
                        textNode.Value = "OCCURRENCES_" + excelLine.dataName.Substring(0, 18);
                    else
                        textNode.Value = "OCCURRENCES_" + excelLine.dataName;

                    dataEntityNode.AppendChild(textNode);
                    entityNode.AppendChild(dataEntityNode);
                }
            }
            if (excelLine.dataTypeBDOC != "Entité")
            {
                XmlElement dataEntityNode = xmlDoc.CreateElement("entityData");
                XmlElement childNode2 = xmlDoc.CreateElement("description");
                XmlText textNode = xmlDoc.CreateTextNode(excelLine.dataDescription);
                textNode.Value = excelLine.dataName;
                dataEntityNode.AppendChild(textNode);
                entityNode.AppendChild(dataEntityNode);
                this.lastObjectInserted = "DATA";
            }
            //---------------------------------------
        }
        public override void createData(BDOCExcelLine excelLine)
        {
            //Pour les donnees
            if (excelLine.dataTypeBDOC != "Entité")
            {

                XmlElement childNode = xmlDoc.CreateElement("data");
                childNode.SetAttribute("name", excelLine.dataName);
                childNode.SetAttribute("type", excelLine.dataType);
                childNode.SetAttribute("length", excelLine.dataLong);
                XmlElement childNode2 = xmlDoc.CreateElement("description");
                XmlText textNode = xmlDoc.CreateTextNode("description");
                textNode.Value = excelLine.dataDescription;
                childNode2.AppendChild(textNode);
                childNode.AppendChild(childNode2);

                childNodeData.AppendChild(childNode);
            }
        }
Example #5
0
        public XCLTrans(string excelFilePath)
        {
            this.myBDOCExcelLine = new BDOCExcelLine();

            this.xmlDoc = new XmlDocument();
            XmlDeclaration dec = this.xmlDoc.CreateXmlDeclaration("1.0", "ISO-8859-1", null);
            this.xmlDoc.AppendChild(dec);
            XmlElement rootNode = xmlDoc.CreateElement("import");
            rootNode.SetAttribute("xmlns", "http://www.bdoc.com");
            rootNode.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
            this.xmlDoc.AppendChild(rootNode);

            XmlNode root = xmlDoc.DocumentElement;

            XmlElement childNodestreams = xmlDoc.CreateElement("streams");
            root.AppendChild(childNodestreams);

            this.childNodestream = xmlDoc.CreateElement("stream");
            childNodestreams.AppendChild(childNodestream);
            childNodestream.SetAttribute("type", "XPATH");

            this.childNodeEntities = xmlDoc.CreateElement("entities");
            root.AppendChild(childNodeEntities);

            this.childNodeData = xmlDoc.CreateElement("datas");
            root.AppendChild(childNodeData);

            this.appEXCEL = new Microsoft.Office.Interop.Excel.ApplicationClass();
            // create the workbook object by opening  the excel file.
            workBook = appEXCEL.Workbooks.Open(excelFilePath, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            // Get The Active Worksheet Using Sheet Name Or Active Sheet
            workSheet = (Worksheet)workBook.ActiveSheet;
            childNodestream.SetAttribute("name", workSheet.Name);

            //************ TXT init
            FinalTXTData = "";
            FinalTXTEntity = "";
            FinalTXTStream = "";

               // throw new System.NotImplementedException();
        }
        public override void createStream(BDOCExcelLine excelLine)
        {
            //STREAMS
            if (excelLine.dataLevel == "0")
            {
                XmlElement rootNode = xmlDoc.CreateElement(!(excelLine.dataXpath.Equals("")) ? excelLine.dataXpath : excelLine.dataName);
                this.xmlDoc.AppendChild(rootNode);
                rootNode.SetAttribute("name", this.workSheetName);
            }

            //first entity who defines the document separator
            if (excelLine.dataLevel == "1")
            {
                XmlNode root = xmlDoc.DocumentElement;

                childNodestream = xmlDoc.CreateElement(!(excelLine.dataXpath.Equals("")) ? excelLine.dataXpath : excelLine.dataName);
                root.AppendChild(childNodestream);

            }

            // entity struct in excel file
            if (excelLine.dataTypeBDOC == "Entité" && excelLine.dataLevel != "0" && excelLine.dataLevel != "1")
            {
                streamNode = xmlDoc.CreateElement(!(excelLine.dataXpath.Equals("")) ? excelLine.dataXpath : excelLine.dataName);
                childNodestream.AppendChild(streamNode);

                if (excelLine.dataIterative == "Oui")
                {
                    streamNode2 = xmlDoc.CreateElement(!(excelLine.dataXpath.Equals("")) ? excelLine.dataXpath : excelLine.dataName);
                    childNodestream.AppendChild(streamNode2);
                    entityIterative = true;
                    //childNodestream.AppendChild(streamNode);
                }
                else
                    entityIterative = false;

                //pour les listes
                if (excelLine.dataName.IndexOf("LIST_") == 0)
                {
                    XmlElement dataStreamNode = xmlDoc.CreateElement(!(excelLine.dataXpath.Equals("")) ? excelLine.dataXpath : excelLine.dataName);
                    //dataStreamNode.SetAttribute("name", excelLine.dataName);

                    //XmlElement childNode2 = xmlDoc.CreateElement("xpath");
                    XmlText textNode = xmlDoc.CreateTextNode(excelLine.dataDescription);
                    //If the excel has an specific XPATH value
                    if (excelLine.dataXMLFlux != "")
                        textNode.Value = excelLine.dataXMLFlux;
                    else
                        textNode.Value = excelLine.dataDescription;
                    dataStreamNode.AppendChild(textNode);
                    streamNode.AppendChild(dataStreamNode);
                }
            }
            //Data struct in excel file
            if (excelLine.dataTypeBDOC != "Entité" )
            {
                XmlElement dataStreamNode = xmlDoc.CreateElement(!(excelLine.dataXpath.Equals("")) ? excelLine.dataXpath : excelLine.dataName);
                XmlText textNode = xmlDoc.CreateTextNode(excelLine.dataDescription);
                if (excelLine.dataXMLFlux != "")
                    textNode.Value = excelLine.dataXMLFlux;
                else
                    textNode.Value = excelLine.dataDescription;

                dataStreamNode.AppendChild(textNode);
                if (streamNode != null)
                    streamNode.AppendChild(dataStreamNode);
                else
                {
                    throw new Exception(ConfigurationSettings.AppSettings["notEntity1Exception"] + excelLine.dataName + ConfigurationSettings.AppSettings["notEntity2Exception"]);
                }

                if (entityIterative == true) {
                    XmlElement dataStreamNode2 = xmlDoc.CreateElement(!(excelLine.dataXpath.Equals("")) ? excelLine.dataXpath : excelLine.dataName);
                    XmlText textNode2 = xmlDoc.CreateTextNode(excelLine.dataDescription);
                    if (excelLine.dataXMLFlux != "")
                        textNode2.Value = excelLine.dataXMLFlux;
                    else
                        textNode2.Value = excelLine.dataDescription;

                    switch (excelLine.dataType){
                        case "INTEGER":
                            textNode2.Value = textNode2.Value + "2";
                        break;
                        case "STRING":
                            textNode2.Value = textNode2.Value + " 2";
                        break;
                        default:
                            textNode2.Value = textNode2.Value + " 2";
                        break;
                    }

                    dataStreamNode2.AppendChild(textNode2);
                    streamNode2.AppendChild(dataStreamNode2);
                }
            }
            //---------------------------------------
        }
        public override void createStream(BDOCExcelLine excelLine)
        {
            //pour les streamses
            //premiere entite qui definira le separateur de document
            if (excelLine.dataLevel == "1")
            {
                FinalTXTStream += "*" + "\r\n"; // 1 flux separator
                FinalTXTStream += excelLine.dataName + "\r\n"; // 2 flux name
                FinalTXTStream += excelLine.dataDescription + "\r\n"; // 3 flux descr
                FinalTXTStream += "0" + "\r\n"; // 4 Stream type , only 0 available
                FinalTXTStream += "0" + "\r\n"; // 5 Line type , only 0 available
                FinalTXTStream += "+0 +3" + "\r\n"; // 6 TypeID ,see admin doc, page 69
                FinalTXTStream += "\r\n"; // 7 stream file path,
                FinalTXTStream += "0" + "\r\n"; // 8 Reserved , only 0 available
            }

            if (excelLine.dataTypeBDOC == "Entité" && excelLine.dataLevel != "0" && excelLine.dataLevel != "1")
            {
                FinalTXTStream += "*E" + "\r\n"; // 9 entity separator
                FinalTXTStream += excelLine.dataName + "\r\n";// 10 entity name
                FinalTXTStream += excelLine.dataDescription + "\r\n";// 11 entity separator
                FinalTXTStream += "0" + "\r\n";// 12 entity type fonctionnel
                FinalTXTStream += (excelLine.dataIterative == "Non") ? "0" + "\r\n" : "1" + "\r\n"; // 13 entity type iterative
                FinalTXTStream += "0" + "\r\n";// 14 reserved
                FinalTXTStream += "001" + "\r\n"; // 15 Id, CORRECT IT!

                FinalTXTStream += "2" + "\r\n"; // 16 Debut document
                FinalTXTStream += "0" + "\r\n"; // 17 Reserved DOC1
                FinalTXTStream += "3" + "\r\n"; // 18 Reserved DOC1

                /* //pour les listes
                if (excelLine.dataName.IndexOf("LIST_") == 0)
                {
                    XmlElement dataStreamNode = xmlDoc.CreateElement("dataNode");
                    dataStreamNode.SetAttribute("name", excelLine.dataName);

                    XmlElement childNode2 = xmlDoc.CreateElement("xpath");
                    textNode = xmlDoc.CreateTextNode(excelLine.dataDescription);
                    if (excelLine.dataName.Length > 18)
                        textNode.Value = "descendant-or-self::OCCURRENCES_" + excelLine.dataName.Substring(0, 18);
                    else
                        textNode.Value = "descendant-or-self::OCCURRENCES_" + excelLine.dataName;
                    childNode2.AppendChild(textNode);
                    dataStreamNode.AppendChild(childNode2);
                    streamNode.AppendChild(dataStreamNode);
                }
                * */
            }
            if (excelLine.dataTypeBDOC != "Entité")
            {
                FinalTXTStream += "*D" + "\r\n"; // data separator
                FinalTXTStream += excelLine.dataName + "\r\n"; // Data name
                FinalTXTStream += excelLine.dataDescription + "\r\n"; // 21 data description
                FinalTXTStream += excelLine.dataLong + "\r\n"; // 22 long data
                switch (excelLine.dataType)
                {
                    case "STRING":
                        FinalTXTStream += "0" + "\r\n";
                        break;
                    case "CHAR":
                        FinalTXTStream += "1" + "\r\n";
                        break;
                    case "INTEGER":
                        FinalTXTStream += "2" + "\r\n";
                        break;
                    case "REAL":
                        FinalTXTStream += "3" + "\r\n";
                        break;
                } // 23 type donnée
                FinalTXTStream += "+1 >#<" + "\r\n"; // 24 delimiteur
                FinalTXTStream += "0" + "\r\n"; // 25 DOC1 Filier
                FinalTXTStream += "0" + "\r\n"; //26 reservée
            }
            //---------------------------------------
        }
        public override void createStream(BDOCExcelLine excelLine)
        {
            //STREAMS
            //first entity who defines the document separator
            if (excelLine.dataLevel == "1")
            {
                XmlElement streamStartNode = xmlDoc.CreateElement("separator");
                streamStartNode.SetAttribute("useForChildren", "true");
                streamStartNode.SetAttribute("type", "START");

                XmlElement streamStartNode2 = xmlDoc.CreateElement("xpath");
                XmlText textNode = xmlDoc.CreateTextNode("xpath");
                //If the excel has an specific XPATH value
                if (excelLine.dataXpath != "")
                    textNode.Value = "descendant-or-self::" + excelLine.dataXpath;
                else
                    textNode.Value = "descendant-or-self::" + excelLine.dataName;
                streamStartNode2.AppendChild(textNode);
                streamStartNode.AppendChild(streamStartNode2);
                childNodestream.AppendChild(streamStartNode);
            }

            // entity struct in excel file
            if (excelLine.dataTypeBDOC == "Entité" && excelLine.dataLevel != "0" && excelLine.dataLevel != "1")
            {
                streamNode = xmlDoc.CreateElement("entityNode");
                streamNode.SetAttribute("name", excelLine.dataName);
                streamNode.SetAttribute("iterative", (excelLine.dataIterative == "Non") ? "false" : "true");

                XmlElement streamNode2 = xmlDoc.CreateElement("xpath");
                XmlText textNode = xmlDoc.CreateTextNode("xpath");
                //If the excel has an specific XPATH value
                if (excelLine.dataXpath != "")
                    textNode.Value = "descendant-or-self::" + excelLine.dataXpath;
                else
                    textNode.Value = "descendant-or-self::" + excelLine.dataName;
                streamNode2.AppendChild(textNode);
                streamNode.AppendChild(streamNode2);

                childNodestream.AppendChild(streamNode);

                //pour les listes
                if (excelLine.dataName.IndexOf("LIST_") == 0)
                {
                    XmlElement dataStreamNode = xmlDoc.CreateElement("dataNode");
                    dataStreamNode.SetAttribute("name", excelLine.dataName);

                    XmlElement childNode2 = xmlDoc.CreateElement("xpath");
                    textNode = xmlDoc.CreateTextNode(excelLine.dataDescription);
                    //If the excel has an specific XPATH value
                    if (excelLine.dataXpath != "")
                        textNode.Value = "descendant-or-self::" + excelLine.dataXpath;
                    else
                    {
                        if (excelLine.dataName.Length > 18)
                            textNode.Value = "descendant-or-self::OCCURRENCES_" + excelLine.dataName.Substring(0, 18);
                        else
                            textNode.Value = "descendant-or-self::OCCURRENCES_" + excelLine.dataName;
                    }

                    childNode2.AppendChild(textNode);
                    dataStreamNode.AppendChild(childNode2);
                    streamNode.AppendChild(dataStreamNode);
                }
            }
            //Data struct in excel file
            if (excelLine.dataTypeBDOC != "Entité")
            {
                XmlElement dataStreamNode = xmlDoc.CreateElement("dataNode");
                dataStreamNode.SetAttribute("name", excelLine.dataName);
                XmlElement childNode2 = xmlDoc.CreateElement("xpath");
                XmlText textNode = xmlDoc.CreateTextNode(excelLine.dataDescription);
                if (excelLine.dataXpath != "")
                    textNode.Value = "descendant-or-self::" + excelLine.dataXpath;
                else
                    textNode.Value = "descendant-or-self::" + excelLine.dataName;
                childNode2.AppendChild(textNode);
                dataStreamNode.AppendChild(childNode2);

                if (streamNode != null)
                    streamNode.AppendChild(dataStreamNode);
                else
                {
                    throw new Exception(ConfigurationSettings.AppSettings["notEntity1Exception"] + excelLine.dataName + ConfigurationSettings.AppSettings["notEntity2Exception"]);
                }

            }
            //---------------------------------------
        }
        public void fillBDOCData(BDOCExcelLine excelLine, Object rowIndex)
        {
            // This row,column index should be changed as per your need.
            // that is which cell in the excel you are interesting to read.
            int colIndex1 = 1;
            int colIndex2 = 2;
            int colIndex3 = 3;
            int colIndex4 = 4;
            int colIndex5 = 5;
            int colIndex6 = 6;
            int colIndex7 = 7;
            int colIndex8 = 8;
            int colIndex9 = 9;

            Object dataLevel = ((Range)excelRange[rowIndex, colIndex1]).Value2;
            Object dataTypeBDOC = ((Range)excelRange[rowIndex, colIndex2]).Value2;
            Object dataName = ((Range)excelRange[rowIndex, colIndex4]).Value2;
            Object dataDescription = ((Range)excelRange[rowIndex, colIndex5]).Value2;
            Object dataXpath = ((Range)excelRange[rowIndex, colIndex8]).Value2;
            Object dataXMLFlux = ((Range)excelRange[rowIndex, colIndex9]).Value2;

            if (dataLevel == null)
            {
                return;
            }

            //read fields
            try
            {
                excelLine.reset();

                excelLine.dataLevel = (dataLevel != null) ? dataLevel.ToString().Trim() : "";
                excelLine.dataTypeBDOC = ( dataTypeBDOC != null) ? dataTypeBDOC.ToString().Trim() : "";
                excelLine.dataName = (dataName != null) ? dataName.ToString().Trim() : "";
                excelLine.dataDescription = (dataDescription != null) ? dataDescription.ToString() : "";
                excelLine.dataXpath = (dataXpath != null) ? dataXpath.ToString() : "";
                excelLine.dataXMLFlux = (dataXMLFlux != null) ? dataXMLFlux.ToString() : "";

                if (excelLine.dataTypeBDOC == "Entité")
                {
                    Object dataIterative = ((Range)excelRange[rowIndex, colIndex3]).Value2;
                    excelLine.dataIterative = (dataIterative != null) ? dataIterative.ToString() : "";
                }
                else
                {
                    Object dataType = ((Range)excelRange[rowIndex, colIndex6]).Value2;
                    Object dataLong = ((Range)excelRange[rowIndex, colIndex7]).Value2;

                    excelLine.dataType = (dataType != null) ? dataType.ToString() : "";
                    excelLine.dataLong = (dataLong!= null) ? dataLong.ToString() : "";
                    excelLine.dataType = (excelLine.dataType == "INT") ? "INTEGER" : excelLine.dataType.ToUpper();
                }

            }
            catch (Exception ex) {
                throw new Exception("The values are not well formatted for the " + excelLine.dataName + " Field. " + ex.Message);
            }

            //HERE ADD CheckBox FUNCTIONS for THE VALUES
        }
 public virtual void createStream(BDOCExcelLine excelLine)
 {
 }
 public virtual void createEntity(BDOCExcelLine excelLine)
 {
 }
 public virtual void createData(BDOCExcelLine excelLine)
 {
 }
Example #13
0
        private void createStreamTXT(BDOCExcelLine excelLine)
        {
            //pour les streamses
            //premiere entite qui definira le separateur de document
            if (excelLine.dataLevel == "1")
            {
                FinalTXTStream += "*" + "\r\n";
                FinalTXTStream += excelLine.dataName + "\r\n";
                FinalTXTStream += excelLine.dataDescription + "\r\n";
                FinalTXTStream += "0" + "\r\n"; //Stream type , only 0 available
                FinalTXTStream += "0" + "\r\n"; //Line type , only 0 available
                FinalTXTStream += "+0 +3" + "\r\n"; //TypeID ,see admin doc, page 69
                FinalTXTStream += "flotFILE.XML" + "\r\n"; //stream file path,
                FinalTXTStream += "0" + "\r\n"; //Reserved , only 0 available
            }

            if (excelLine.dataTypeBDOC == "Entité" && excelLine.dataLevel != "0")
            {
                FinalTXTStream += "*E" + "\r\n";
                FinalTXTStream += excelLine.dataName + "\r\n";
                FinalTXTStream += excelLine.dataDescription + "\r\n";
                FinalTXTStream += "0" + "\r\n"; //Stream type , only 0 available
                FinalTXTStream += (excelLine.dataIterative == "Non") ? "0" : "1";
                FinalTXTStream += "AAA" + "\r\n"; //Id, CORRECT IT!

                FinalTXTStream += "+0 +3" + "\r\n"; //TypeID ,see admin doc, page 69
                FinalTXTStream += "flotFILE.XML" + "\r\n"; //stream file path,
                FinalTXTStream += "0" + "\r\n"; //Reserved , only 0 available
                streamNode.SetAttribute("iterative", (excelLine.dataIterative == "Non") ? "false" : "true");

                XmlElement streamNode2 = xmlDoc.CreateElement("xpath");
                XmlText textNode = xmlDoc.CreateTextNode("xpath");
                textNode.Value = "descendant-or-self::" + excelLine.dataName;
                streamNode2.AppendChild(textNode);
                streamNode.AppendChild(streamNode2);

                childNodestream.AppendChild(streamNode);

                //pour les listes
                if (excelLine.dataName.IndexOf("LIST_") == 0)
                {
                    XmlElement dataStreamNode = xmlDoc.CreateElement("dataNode");
                    dataStreamNode.SetAttribute("name", excelLine.dataName);

                    XmlElement childNode2 = xmlDoc.CreateElement("xpath");
                    textNode = xmlDoc.CreateTextNode(excelLine.dataDescription);
                    if (excelLine.dataName.Length > 18)
                        textNode.Value = "descendant-or-self::OCCURRENCES_" + excelLine.dataName.Substring(0, 18);
                    else
                        textNode.Value = "descendant-or-self::OCCURRENCES_" + excelLine.dataName;
                    childNode2.AppendChild(textNode);
                    dataStreamNode.AppendChild(childNode2);
                    streamNode.AppendChild(dataStreamNode);
                }
            }
            if (excelLine.dataTypeBDOC != "Entité")
            {
                XmlElement dataStreamNode = xmlDoc.CreateElement("dataNode");
                dataStreamNode.SetAttribute("name", excelLine.dataName);
                XmlElement childNode2 = xmlDoc.CreateElement("xpath");
                XmlText textNode = xmlDoc.CreateTextNode(excelLine.dataDescription);
                textNode.Value = "descendant-or-self::" + excelLine.dataName;
                childNode2.AppendChild(textNode);
                dataStreamNode.AppendChild(childNode2);
                streamNode.AppendChild(dataStreamNode);
            }
            //---------------------------------------
        }