X12Translator Component

Properties   Methods   Events   Config Settings   Errors  

The X12Translator component converts X12 documents to XML and back, streamlining translation between formats.

Syntax

nsoftware.EDISDK.X12Translator

Remarks

The component will convert a document from the format specified by InputFormat to the format specified by OutputFormat. This allows for converting to XML from EDI and vice versa.

Before translating from EDI to XML it is recommended to load a schema using the LoadSchema method. This ensures additional information can be included in the XML or JSON document. If a schema is specified the XML will include types and descriptions as element attributes which are useful for interpreting the data.

After calling Translate the resulting output will contain the EDI or XML data as defined by OutputFormat.

Input and Output Properties

The component will determine the source and destination of the input and output based on which properties are set.

The order in which the input properties are checked is as follows:

When a valid source is found the search stops. The order in which the output properties are checked is as follows:
  • OutputFile
  • OutputData: The output data is written to this property if no other destination is specified.

Property List


The following is the full list of the properties of the component with short descriptions. Click on the links for further details.

DelimitersContains the delimiters for the EDI Document.
FileWriteModeDetermines how the output file is opened for writing.
InputDataThe EDI message, specified as a string.
InputFileThe file containing the EDI message.
InputFormatThe format of the input data.
OutputDataThe translated EDI data.
OutputFileThe name of the file to write the translated EDI data to.
OutputFormatThe format of the output data.
SegmentSuffixThe suffix that is appended to the end of a segment.

Method List


The following is the full list of the methods of the component with short descriptions. Click on the links for further details.

ConfigSets or retrieves a configuration setting.
LoadSchemaLoads schema information from a file or string data.
ResetResets all properties to their default values.
SetInputStreamThe stream containing the EDI data.
SetOutputStreamSets the output stream where the translated data will be written.
TranslateTranslates the specified data.

Event List


The following is the full list of the events fired by the component with short descriptions. Click on the links for further details.

ErrorFires when a parsing error occurs.
ResolveSchemaFires to request schema information for a specific transaction set.
ValidateWarningFires to warn about validation errors.

Config Settings


The following is a list of config settings for the component with short descriptions. Click on the links for further details.

CloseStreamAfterTranslateWhether to close the output stream after translation.
EncodingThe character encoding to use for the output X12 document.
UseDescriptionsWhether descriptions will be included in the output XML.

Delimiters Property (X12Translator Component)

Contains the delimiters for the EDI Document.

Syntax

public X12Delimiters Delimiters { get; }
Public ReadOnly Property Delimiters As X12Delimiters

Remarks

This property contains the delimiters that will be used when parsing the X12 document. If the document uses delimiters other than the default, change the properties of this object to parse the document correctly.

This property is read-only and not available at design time.

Please refer to the X12Delimiters type for a complete list of fields.

FileWriteMode Property (X12Translator Component)

Determines how the output file is opened for writing.

Syntax

public X12TranslatorFileWriteModes FileWriteMode { get; set; }

enum X12TranslatorFileWriteModes { fwmCreate, fwmOverwrite, fwmAppend }
Public Property FileWriteMode As X12translatorFileWriteModes

Enum X12TranslatorFileWriteModes fwmCreate fwmOverwrite fwmAppend End Enum

Default Value

0

Remarks

When OutputFile is set, this property determines how the file will be opened.

fwmCreateCreates a new file. If the file already exists, the translation will fail.
fwmOverwriteOpens an existing file and overwrites its contents. If the file does not exist, a new file will be created.
fwmAppendOpens an existing file and appends data to the end of the file. If the file does not exist, a new file will be created.

This property is not available at design time.

InputData Property (X12Translator Component)

The EDI message, specified as a string.

Syntax

public string InputData { get; set; }
Public Property InputData As String

Default Value

""

Remarks

Set this property to specify the input EDI message as a string. The message can then be parsed with Parse.

This property is not available at design time.

InputFile Property (X12Translator Component)

The file containing the EDI message.

Syntax

public string InputFile { get; set; }
Public Property InputFile As String

Default Value

""

Remarks

Set this property to specify the input EDI message as a file. The message can then be parsed with Parse.

If the file is not found or cannot be opened, an error will be returned.

Note: If both InputFile and InputData are set, InputData takes precedence.

This property is not available at design time.

InputFormat Property (X12Translator Component)

The format of the input data.

Syntax

public X12TranslatorInputFormats InputFormat { get; set; }

enum X12TranslatorInputFormats { ifEDI, ifXML }
Public Property InputFormat As X12translatorInputFormats

Enum X12TranslatorInputFormats ifEDI ifXML End Enum

Default Value

0

Remarks

The value set here, along with OutputFormat, determines how the data is converted when Translate is called.

Possible values are:

  • 0 (ifEDI)
  • 1 (ifXML)

This property is not available at design time.

OutputData Property (X12Translator Component)

The translated EDI data.

Syntax

public string OutputData { get; set; }
Public Property OutputData As String

Default Value

""

Remarks

This property will be populated with the translated data after calling Translate if OutputFile and SetOutputStream are not set.

This property is not available at design time.

OutputFile Property (X12Translator Component)

The name of the file to write the translated EDI data to.

Syntax

public string OutputFile { get; set; }
Public Property OutputFile As String

Default Value

""

Remarks

This file specified by this property will be populated with the output after calling Translate if SetOutputStream is not set.

If a file with the specified name already exists Translate will fail unless FileWriteMode is set to "fwmOverwrite" or "fwmAppend".

This property is not available at design time.

OutputFormat Property (X12Translator Component)

The format of the output data.

Syntax

public X12TranslatorOutputFormats OutputFormat { get; set; }

enum X12TranslatorOutputFormats { ofEDI, ofXML }
Public Property OutputFormat As X12translatorOutputFormats

Enum X12TranslatorOutputFormats ofEDI ofXML End Enum

Default Value

0

Remarks

The value set here, along with InputFormat, determines how the data is converted when Translate is called.

Possible values are:

  • 0 (ofEDI)
  • 1 (ofXML)

This property is not available at design time.

SegmentSuffix Property (X12Translator Component)

The suffix that is appended to the end of a segment.

Syntax

public X12TranslatorSegmentSuffixes SegmentSuffix { get; set; }

enum X12TranslatorSegmentSuffixes { ssNone, ssCR, ssLF, ssCRLF }
Public Property SegmentSuffix As X12translatorSegmentSuffixes

Enum X12TranslatorSegmentSuffixes ssNone ssCR ssLF ssCRLF End Enum

Default Value

3

Remarks

This property determines the suffix that is appended to the end of a segment.

Possible values are:

ssNone (0)No suffix is appended to the segment.
ssCR (1)A carriage return (ASCII 13) is appended to the segment.
ssLF (2)A line feed (ASCII 10) is appended to the segment.
ssCRLF (3)A carriage return followed by a line feed (ASCII 13 and 10) is appended to the segment. This is the default value.

This property is not available at design time.

Config Method (X12Translator Component)

Sets or retrieves a configuration setting.

Syntax

public string Config(string configurationString);

Async Version
public async Task<string> Config(string configurationString);
public async Task<string> Config(string configurationString, CancellationToken cancellationToken);
Public Function Config(ByVal ConfigurationString As String) As String

Async Version
Public Function Config(ByVal ConfigurationString As String) As Task(Of String)
Public Function Config(ByVal ConfigurationString As String, cancellationToken As CancellationToken) As Task(Of String)

Remarks

Config is a generic method available in every component. It is used to set and retrieve configuration settings for the component.

These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the component, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.

LoadSchema Method (X12Translator Component)

Loads schema information from a file or string data.

Syntax

public void LoadSchema(string fileOrData, string messagename);

Async Version
public async Task LoadSchema(string fileOrData, string messagename);
public async Task LoadSchema(string fileOrData, string messagename, CancellationToken cancellationToken);
Public Sub LoadSchema(ByVal fileOrData As String, ByVal messagename As String)

Async Version
Public Sub LoadSchema(ByVal fileOrData As String, ByVal messagename As String) As Task
Public Sub LoadSchema(ByVal fileOrData As String, ByVal messagename As String, cancellationToken As CancellationToken) As Task

Remarks

This method loads schema information for use when parsing, validating, and translating messages.

The FileOrData parameter can be set to the path of a file containing schema data, or can be set to the contents of a schema file directly.

MessageName can be set to the name of a specific message to load only the specified message's schema information. If left empty or set to "*", the entire schema will be loaded.

Reset Method (X12Translator Component)

Resets all properties to their default values.

Syntax

public void Reset();

Async Version
public async Task Reset();
public async Task Reset(CancellationToken cancellationToken);
Public Sub Reset()

Async Version
Public Sub Reset() As Task
Public Sub Reset(cancellationToken As CancellationToken) As Task

Remarks

This method resets all properties of the component to their default values as specified in the property definitions.

SetInputStream Method (X12Translator Component)

The stream containing the EDI data.

Syntax

public void SetInputStream(System.IO.Stream inputStream);

Async Version
public async Task SetInputStream(System.IO.Stream inputStream);
public async Task SetInputStream(System.IO.Stream inputStream, CancellationToken cancellationToken);
Public Sub SetInputStream(ByVal InputStream As System.IO.Stream)

Async Version
Public Sub SetInputStream(ByVal InputStream As System.IO.Stream) As Task
Public Sub SetInputStream(ByVal InputStream As System.IO.Stream, cancellationToken As CancellationToken) As Task

Remarks

Call this method to specify a stream to read the input EDI data from. The data can then be parsed with Parse.

SetOutputStream Method (X12Translator Component)

Sets the output stream where the translated data will be written.

Syntax

public void SetOutputStream(System.IO.Stream outputStream);

Async Version
public async Task SetOutputStream(System.IO.Stream outputStream);
public async Task SetOutputStream(System.IO.Stream outputStream, CancellationToken cancellationToken);
Public Sub SetOutputStream(ByVal OutputStream As System.IO.Stream)

Async Version
Public Sub SetOutputStream(ByVal OutputStream As System.IO.Stream) As Task
Public Sub SetOutputStream(ByVal OutputStream As System.IO.Stream, cancellationToken As CancellationToken) As Task

Remarks

This method sets the output stream for the component. The output stream must be writable. Calling Translate will write the translated EDI data to the specified output stream and close the stream when finished.

Translate Method (X12Translator Component)

Translates the specified data.

Syntax

public void Translate();

Async Version
public async Task Translate();
public async Task Translate(CancellationToken cancellationToken);
Public Sub Translate()

Async Version
Public Sub Translate() As Task
Public Sub Translate(cancellationToken As CancellationToken) As Task

Remarks

This method translates the specified data.

Error Event (X12Translator Component)

Fires when a parsing error occurs.

Syntax

public event OnErrorHandler OnError;

public delegate void OnErrorHandler(object sender, X12TranslatorErrorEventArgs e);

public class X12TranslatorErrorEventArgs : EventArgs {
  public int ErrorCode { get; }
  public string Description { get; }
}
Public Event OnError As OnErrorHandler

Public Delegate Sub OnErrorHandler(sender As Object, e As X12TranslatorErrorEventArgs)

Public Class X12TranslatorErrorEventArgs Inherits EventArgs
  Public ReadOnly Property ErrorCode As Integer
  Public ReadOnly Property Description As String
End Class

Remarks

This event fires when the component encounters a parsing error while processing a document.

ResolveSchema Event (X12Translator Component)

Fires to request schema information for a specific transaction set.

Syntax

public event OnResolveSchemaHandler OnResolveSchema;

public delegate void OnResolveSchemaHandler(object sender, X12TranslatorResolveSchemaEventArgs e);

public class X12TranslatorResolveSchemaEventArgs : EventArgs {
  public string VersionNumber { get; }
  public string TransactionSetIDCode { get; }
}
Public Event OnResolveSchema As OnResolveSchemaHandler

Public Delegate Sub OnResolveSchemaHandler(sender As Object, e As X12TranslatorResolveSchemaEventArgs)

Public Class X12TranslatorResolveSchemaEventArgs Inherits EventArgs
  Public ReadOnly Property VersionNumber As String
  Public ReadOnly Property TransactionSetIDCode As String
End Class

Remarks

LoadSchema can be called from within this event to load the schema information for the specified transaction set.

ValidateWarning Event (X12Translator Component)

Fires to warn about validation errors.

Syntax

public event OnValidateWarningHandler OnValidateWarning;

public delegate void OnValidateWarningHandler(object sender, X12TranslatorValidateWarningEventArgs e);

public class X12TranslatorValidateWarningEventArgs : EventArgs {
  public long Position { get; }
  public int Line { get; }
  public int Column { get; }
  public string ErrorCode { get; }
  public string ErrorMessage { get; }
  public int ErrorType { get; }
}
Public Event OnValidateWarning As OnValidateWarningHandler

Public Delegate Sub OnValidateWarningHandler(sender As Object, e As X12TranslatorValidateWarningEventArgs)

Public Class X12TranslatorValidateWarningEventArgs Inherits EventArgs
  Public ReadOnly Property Position As Long
  Public ReadOnly Property Line As Integer
  Public ReadOnly Property Column As Integer
  Public ReadOnly Property ErrorCode As String
  Public ReadOnly Property ErrorMessage As String
  Public ReadOnly Property ErrorType As Integer
End Class

Remarks

When the component encounters a non-blocking error while validating a document, this event fires with information about the error.

X12Delimiters Type

The delimiters used in the X12 document.

Remarks

This type contains fields specifying the various delimiters used within the X12 document.

The following fields are available:

Fields

Component
string

Default: ":"

The delimiter separating components.

In X12Reader, this type is used to hold the delimiters found when parsing the component, while in X12Writer the fields can be set to choose the delimiters that will be used when writing

Element
string

Default: "*"

The delimiter separating elements.

In X12Reader, this type is used to hold the delimiters found when parsing the element, while in X12Writer the fields can be set to choose the delimiters that will be used when writing

Repetition
string

Default: "^"

The delimiter separating components.

In X12Reader, this type is used to hold the delimiters found when parsing the component, while in X12Writer the fields can be set to choose the delimiters that will be used when writing

Segment
string

Default: "~"

The delimiter separating segments.

In X12Reader, this type is used to hold the delimiters found when parsing the segment, while in X12Writer the fields can be set to choose the delimiters that will be used when writing

Constructors

public X12Delimiters();
Public X12Delimiters()

Config Settings (X12Translator Component)

The component accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the component, access to these internal properties is provided through the Config method.

X12Translator Config Settings

CloseStreamAfterTranslate:   Whether to close the output stream after translation.

This setting controls whether the output stream is closed after the translation process is complete. The default value is true.

Encoding:   The character encoding to use for the output X12 document.

This setting specifies the character encoding to be used for the output X12 document. The default value is "UTF-8".

UseDescriptions:   Whether descriptions will be included in the output XML.

This setting controls whether descriptions are included in the output XML. The default value is true.

Trappable Errors (X12Translator Component)

X12Translator Errors

202   Invalid argument.
304   Cannot write to file.
1003   Could not find the selected schema in the chosen file.
1099   Encountered an unexpected segment tag.
1100   Attempted to perform an action while the component was busy, or close an incomplete interchange.
1044   Tried to load an invalid schema file.
1203   Encountered an error while validating the UNA segment.