Esempio n. 1
0
        public XmlTextWriter fAddLevesXML(DataSet datasetCFDI_XML, XmlTextWriter writerXML, string sActualColumnLevel_2, string sActualColumnLevel_3)
        {
            string sCellValue;
            string sActualColumnLevel_4;

            sActualColumnLevel_4 = "";
            foreach (DataRow datarowCFDI_XML in datasetCFDI_XML.Tables[0].Rows)
            {
                sActualColumnLevel_4 = "";
                foreach (DataColumn datacolCFDI_XML in datasetCFDI_XML.Tables[0].Columns)
                {
                    string[] sColumnNameSplit = fNivelesCol(datacolCFDI_XML.ColumnName);
                    sCellValue = datarowCFDI_XML[datacolCFDI_XML, DataRowVersion.Current].ToString();
                    if (sColumnNameSplit[0] != "null" && sCellValue != "")
                    {
                        switch (sColumnNameSplit.LongLength)
                        {
                        case 1:
                            writerXML.WriteAttributeString(sColumnNameSplit[0], sCellValue);
                            sActualColumnLevel_2 = sNivel0;
                            iLevelAnt            = 1;
                            break;

                        case 2:
                            if (sActualColumnLevel_2 != sColumnNameSplit[0])
                            {
                                for (int i = 0; i < iLevelAnt - 1; i++)
                                {
                                    writerXML.WriteEndElement();
                                }
                                sActualColumnLevel_2 = sColumnNameSplit[0];
                                writerXML.WriteStartElement("cfdi:" + sActualColumnLevel_2);
                                if (sColumnNameSplit[1] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[1], sCellValue);
                                }
                            }
                            else if (sActualColumnLevel_2 == sColumnNameSplit[0])
                            {
                                if (sColumnNameSplit[1] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[1], sCellValue);
                                }
                            }
                            iLevelAnt = 2;
                            break;

                        case 3:
                            if (sActualColumnLevel_2 == sColumnNameSplit[0] && sActualColumnLevel_3 != sColumnNameSplit[1])
                            {
                                if (iLevelAnt == 3)
                                {
                                    writerXML.WriteEndElement();
                                }
                                if (iLevelAnt == 4)
                                {
                                    writerXML.WriteEndElement();
                                    writerXML.WriteEndElement();
                                }
                                sActualColumnLevel_3 = sColumnNameSplit[1];
                                writerXML.WriteStartElement("cfdi:" + sActualColumnLevel_3);
                                if (sColumnNameSplit[2] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[2], sCellValue);
                                }
                            }
                            else if (sActualColumnLevel_2 == sColumnNameSplit[0] && sActualColumnLevel_3 == sColumnNameSplit[1])
                            {
                                if (sColumnNameSplit[2] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[2], sCellValue);
                                }
                            }
                            else if (sActualColumnLevel_2 == sColumnNameSplit[0])
                            {
                                sActualColumnLevel_3 = sColumnNameSplit[1];
                                writerXML.WriteStartElement("cfdi:" + sActualColumnLevel_3);
                                if (sColumnNameSplit[2] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[2], sCellValue);
                                }
                            }
                            iLevelAnt = 3;
                            break;

                        case 4:
                            if (sActualColumnLevel_2 == sColumnNameSplit[0] && sActualColumnLevel_3 == sColumnNameSplit[1] && sActualColumnLevel_4 != sColumnNameSplit[2])
                            {
                                if (iLevelAnt == 4)
                                {
                                    writerXML.WriteEndElement();
                                }
                                sActualColumnLevel_4 = sColumnNameSplit[2];
                                writerXML.WriteStartElement("cfdi:" + sActualColumnLevel_4);
                                if (sColumnNameSplit[3] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[3], sCellValue);
                                }
                            }
                            else if (sActualColumnLevel_2 == sColumnNameSplit[0] && sActualColumnLevel_3 == sColumnNameSplit[1] && sActualColumnLevel_4 == sColumnNameSplit[2])
                            {
                                if (sColumnNameSplit[3] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[3], sCellValue);
                                }
                            }
                            iLevelAnt = 4;
                            break;
                        }
                    }
                    else if (sColumnNameSplit[0] == "null" && sColumnNameSplit[1] == "SQL")
                    {
                        DataSet      datasetCFDI_XML_Nested = new DataSet();
                        DataRetrieve dataRetrieve           = new DataRetrieve();
                        datasetCFDI_XML_Nested = dataRetrieve.SelectDataRetrieve(sCellValue, Util.ConnectionString);
                        writerXML            = fAddLevesXML(datasetCFDI_XML_Nested, writerXML, sActualColumnLevel_2, sActualColumnLevel_3);
                        sActualColumnLevel_3 = "";
                    }
                }
            }
            return(writerXML);
        }