1
제 3 자 XML 파일에서 데이터를 읽으므로 (해당 구조와 내용을 제어 할 수 없습니다).일관성없는 XML 파일 구조
파일에 일관된 요소/속성이 없기 때문에 파일을 준비하려고 할 때 프로그램이 충돌합니다.
속성이 각 통과에 존재하는지 확인하고 전체 레코드를 건너 뛰지 않고 해당 속성을 건너 뛰거나 기본값을 null로 기본값으로 설정했는지 확인하십시오. 즉, 나머지 필드는 여전히 필요합니다.
주석 처리 된 속성은 현재 각 레코드에 항상 표시되는 것은 아니지만 AbbreviationChar은 xml 파일의 처음 30 개 레코드에 표시되지만 31 번째 레코드는 속성으로 표시하지 않으며 레코드 32에는 표시됩니다 다시 게재.
public IEnumerable<KronosPayCode> ImportPayCodes()
{
var processingOrder = _db.KronosConfigurationFiles.ToList();
if (!processingOrder.Any()) return null;
var xmlFile = Path.Combine(_xmlPath, "WSAPayCode.xml");
var stream = new FileStream(xmlFile, FileMode.Open, FileAccess.Read);
var xdoc = XDocument.Load(stream);
var payCodeCollection = xdoc.Descendants("WSAPayCode");
var kronosCollection = new List<KronosPayCode>();
foreach (var element in payCodeCollection)
{
var abbreviationChar = element.Attribute("AbbreviationChar");
var payCode = new KronosPayCode
{
Name = element.Attribute("Name").Value,
AutoResolved = element.Attribute("AutoResolved").Value.IsBool(),
EditExcuseAbsn = element.Attribute("EditExcuseAbsn").Value.IsBool(),
PersistPceSw = element.Attribute("PersistPceSw").Value.IsBool(),
//AbbreviationChar=element.Attribute("AbbreviationChar").Value,
EditCntToCdotSw=element.Attribute("EditCntToCdotSw").Value.IsBool(),
EditAffShfTotal=element.Attribute("EditAffShfTotal").Value.IsBool(),
EditCntToOt=element.Attribute("EditCntToOt").Value.IsBool(),
PayUsingWeightedAverageRate=element.Attribute("PayUsingWeightedAverageRate").Value.IsBool(),
RequiresMgrApproval=element.Attribute("RequiresMgrApproval").Value.IsBool(),
WeightedAverageRateIsComputedDaily=element.Attribute("WeightedAverageRateIsComputedDaily").Value.IsBool(),
JustAutoResExpAsWorked=element.Attribute("JustAutoResExpAsWorked").Value.IsBool(),
AssociatedDurationPayCodeName=element.Attribute("AssociatedDurationPayCodeName").Value,
WeightedAverageRateContributionsUseAnAdjustedRate=element.Attribute("WeightedAverageRateContributionsUseAnAdjustedRate").Value.IsBool(),
ScheduleHoursType=element.Attribute("ScheduleHoursType").Value,
CheckAvlbltySw=element.Attribute("CheckAvlbltySw").Value.IsBool(),
//WageAddition=element.Attribute("WageAddition").Value,
VisibleInMainArea=element.Attribute("VisibleInMainArea").Value.IsBool(),
IsMoneyCategory=element.Attribute("IsMoneyCategory").Value.IsBool(),
AmountType=element.Attribute("AmountType").Value,
VisibleInReport=element.Attribute("VisibleInReport").Value.IsBool(),
ContributesToWeightedAverageRates=element.Attribute("ContributesToWeightedAverageRates").Value.IsBool(),
//UnjustAutoResExpAsWorked=element.Attribute("UnjustAutoResExpAsWorked").Value.IsBool(),
//WageMultiply=element.Attribute("WageMultiply").Value,
//Type=element.Attribute("Type").Value,
//VisibleToUser=element.Attribute("VisibleToUser").Value.IsBool(),
CustomerId = 11,
};
_db.KronosPayCodes.Add(payCode);
_db.SaveChanges();
kronosCollection.Add(payCode);
}
return kronosCollection;
}