public void ResolveToHeader() { if (stack.Count == 0) { return; } var item = stack.Pop(); while (item.ModelType != Type814Types.Header) { if (stack.Count == 0) { return; } item = stack.Pop(); } var header = item as Type814Header; if (header == null) { return; } model.AddHeader(header); }
public IMarketFileParseResult Parse(Stream stream) { var context = new Import814Model(); var document = XDocument.Load(stream); var documentElement = document.Root; if (documentElement == null) { throw new InvalidOperationException(); } var namespaces = documentElement.Attributes() .Where(x => x.IsNamespaceDeclaration) .GroupBy(x => (x.Name.Namespace == XNamespace.None) ? string.Empty : x.Name.LocalName, x => XNamespace.Get(x.Value)) .ToDictionary(x => x.Key, x => x.First()); XNamespace empty; if (!namespaces.TryGetValue(string.Empty, out empty)) { empty = XNamespace.None; } var countElement = documentElement.Element(empty + "TransactionCount"); if (countElement != null) { context.TransactionAuditCount = (int)countElement; } context.InterchangeControlNbr = documentElement.GetChildText(empty + "InterchangeControlNbr"); var headerElements = documentElement.Descendants(empty + "Header"); foreach (var headerElement in headerElements) { var header = ParseHeader(headerElement, namespaces); context.AddHeader(header); context.TransactionActualCount++; } return(context); }