У меня есть данные файла страховых полисов в формате csv, которые мне нужно преобразовать в xml-файл с помощью ssis. Теперь, когда у меня есть уникальные страховые номера в CSV, я могу сгенерировать XML-файл в требуемом формате, но есть многократные страховые номера. НапримерСемья застраховала свои автомобили, имея 4 водителя и 4 автомобиля, поэтому в файле CSV есть 4 записи этого страхового номера, который должен быть 1 блоком в xml, причем страховой номер встречается 1 раз, а все записи водителя и транспортного средства - 4 раза под 1 страховым номером. tag.
Я создал XML-файл, если нет повторений номера водителя, транспортного средства или страховки. Я очень новичок в SSIS и никогда не занимался кодированием на c #, так что если кто-то может мне помочь с кодом. Как перебрать столбцы, если они повторяются, и сделать для них записи дочерних узлов.
Это код, который я использовал в компоненте сценария ssis, чтобы сгенерировать требуемую структуру xml, но она работает только в том случае, еслинет повторения.
string[] lines = File.ReadAllLines(@"H:\SSIS\Source\Intermediate.csv");
XElement xml = new XElement("Submissions",
from str in lines
let columns = str.Split(',')
select new XElement("SubmissionEntry",
new XElement("SubmissionID", columns[0]),
new XElement("PolicyNumber", columns[1]),
new XElement("OfferingCodeIdentifier", columns[2]),
new XElement("BaseState", columns[3]),
new XElement("EffectiveDate", columns[4]),
new XElement("PeriodStart", columns[5]),
new XElement("RateASOfDate", columns[6]),
new XElement("RenewalNumber", columns[7]),
new XElement("RatingCapFactor", columns[8]),
new XElement("ConversionFactor", columns[9]),
new XElement("ClaimsFreeCount", columns[10]),
new XElement("PaidInFull", columns[11]),
new XElement("IsHomeOwner", columns[12]),
new XElement("IsNewBusinessTransfer", columns[13]),
new XElement("IsNamedNonOwnerPolicy ", columns[14]),
new XElement("LVTTier", columns[15]),
new XElement("PNIBirthDate", columns[16]),
new XElement("PNIPostalCode", columns[17]),
new XElement("CreditStatus", columns[18]),
new XElement("EquivalentCreditScore ", columns[19]),
new XElement("CreditScore", columns[20]),
new XElement("DeliverySource", columns[21]),
new XElement("ChannelGroup", columns[22]),
new XElement("LineCoverages",
new XElement("LineCovEntry",
new XElement("PatternCode", columns[23]),
new XElement("CoverageTerms",
new XElement("CovTermCodeIdentifier", columns[24]),
new XElement("CovTermValue", columns[25])))),
new XElement("PolicyDrivers",
new XElement("DriverEntry",
new XElement("DriverID", columns[26]),
new XElement("DriverType", columns[27]),
new XElement("Excluded", columns[28]),
new XElement("RelationToApplicant", columns[29]),
new XElement("DateOfBirth", columns[30]),
new XElement("Gender", columns[31]),
new XElement("MaritalStatus", columns[32]),
new XElement("AgeLicensed", columns[33]),
new XElement("LicenseStatus", columns[34]),
new XElement("LicenseCountry", columns[35]),
new XElement("UnverifiedDriver", columns[36]),
new XElement("EmploymentStatus", columns[37]),
new XElement("DriverImprovementCourse", columns[38]),
new XElement("DriverImprovementCourse", columns[39]),
new XElement("IncidentEntry",
new XElement("IncidentID", columns[40]),
new XElement("IncidentDate", columns[41]),
new XElement("ViolationCode", columns[42]),
new XElement("OverrideCategory", columns[43]),
new XElement("LossAmount", columns[44])))),
new XElement("PersonalVehicles",
new XElement("VehicleEntry",
new XElement("VehicleID", columns[45]),
new XElement("VehicleYear", columns[46]),
new XElement("GaragePostalCode", columns[47]),
new XElement("PrimaryUse", columns[48]),
new XElement("GaragedOutOfState3MonthsPerYear", columns[49]),
new XElement("SecurityTypeCode", columns[50])),
new XElement("RAPA",
new XElement("Rapa_Bi", columns[51]),
new XElement("Rapa_Coll", columns[52]),
new XElement("Rapa_Comp", columns[53]),
new XElement("Rapa_Med", columns[54]),
new XElement("Rapa_Pd", columns[55]),
new XElement("Rapa_Pip", columns[56])),
new XElement("VehicleCovEntry",
new XElement("PatternCode", columns[57]),
new XElement("CoverageTerm",
new XElement("CovTermCodeIdentifier", columns[58]),
new XElement("CovTermValue", columns[59]))))));
xml.Save(@"H:\SSIS\Destination\demo xml.xml");