/// <summary> /// The do close output. /// </summary> private void DoCloseOutput() { if (writer != null) { try { writer.Close(); } catch { } writer = null; } if (outputStream != null) { try { outputStream.Close(); } catch { } outputStream = null; } }
/// <summary> /// The ensure write. /// </summary> private void EnsureWrite() { if (writer == null) { if (reader == null) { throw new InvalidOperationException("Недоступен базовый объект сериализации"); } if (reader.MoveToContent() != XmlNodeType.Element) { throw new InvalidOperationException("Ошибка чтения базового объекта сериализации"); } outputStream = new FileStreamFoms(TargetFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); var settings = new XmlWriterSettings { Encoding = Encoding.Default, Indent = false, NewLineHandling = NewLineHandling.Replace, NewLineChars = string.Empty, OmitXmlDeclaration = false }; writer = XmlWriter.Create(outputStream, settings); writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI); if (reader.MoveToFirstAttribute()) { do { if (string.Compare(reader.Name, "xmlns", StringComparison.Ordinal) != 0) { writer.WriteAttributeString(reader.Prefix, reader.LocalName, reader.NamespaceURI, reader.Value); } }while (reader.MoveToNextAttribute()); } if (LookNearNode() != Hl7Node.Header) { DoClose(); throw new InvalidOperationException("Ошибка чтения корневого узла Hl7"); } var defattr = false; writer.WriteNode(reader, defattr); writer.Flush(); outputStream.ResetHashWriteCalculator(new Crc32()); while (LookNearNode() == Hl7Node.Message) { var flag2 = false; writer.WriteNode(reader, flag2); messagesWritten += 1L; } if ((LookNearNode() != Hl7Node.Trailer) || !LoadBatchTrailer()) { DoClose(); throw new InvalidOperationException("Ошибка чтения завершающего узла Hl7"); } DoCloseInput(); } }