X12Validator Component

Properties   Methods   Events   Config Settings   Errors  

The X12Validator component validates X12 documents against the specified standard, ensuring compliance and correctness.

Syntax

nsoftware.EDISDK.X12Validator

Remarks

This component provides a simple way to validate an EDI document and obtain details about any validation errors.

Before calling Validate call LoadSchema to load the schema for the document to be validated. The schema defines many validation rules such as minimum and maximum lengths, minimum and maximum occurrences, and more. The validation performed by the component depends largely on the schema's definition.

When the Validate method is called the component will attempt to validate the document. If errors are found during validation the ValidationErrors property will be populated with details of each error.

Inspect the ValidationErrors property for information on any errors that were encountered.

Validation Example validator.InputFile = @"C:\X12_Files\810_InvalidRepeat.txt"; validator.LoadSchema(@"C:\X12_Schemas\4010.xml", "810"); validator.Validate(); foreach (X12ValidationErrorDetail error in validator.ValidationErrors) { Console.WriteLine(error.ErrorCode + ": " + error.ErrorMessage); }

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.
InputDataThe EDI message, specified as a string.
InputFileThe file containing the EDI message.
ValidationErrorsCollection of validation errors for the current document.

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.
ValidateValidate the EDI document and warn about any errors encountered.

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.

InputFormatThe format of the input X12 document for validation.
MaxValidationErrorsThe maximum number of validation errors to return.

Delimiters Property (X12Validator 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.

InputData Property (X12Validator 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 (X12Validator 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.

ValidationErrors Property (X12Validator Component)

Collection of validation errors for the current document.

Syntax

public X12ValidationErrorDetailList ValidationErrors { get; }
Public ReadOnly Property ValidationErrors As X12ValidationErrorDetailList

Remarks

After calling Validate this property contains details of any validation errors. Validation errors are also accessible through the ValidateWarning event as the document is validated.

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

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

Config Method (X12Validator 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 (X12Validator 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 (X12Validator 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 (X12Validator 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.

Validate Method (X12Validator Component)

Validate the EDI document and warn about any errors encountered.

Syntax

public void Validate();

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

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

Remarks

This method parses the input EDI document, firing the ValidateWarning event for any non-blocking errors it encounters.

Error Event (X12Validator Component)

Fires when a parsing error occurs.

Syntax

public event OnErrorHandler OnError;

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

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

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

Public Class X12ValidatorErrorEventArgs 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 (X12Validator Component)

Fires to request schema information for a specific transaction set.

Syntax

public event OnResolveSchemaHandler OnResolveSchema;

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

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

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

Public Class X12ValidatorResolveSchemaEventArgs 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 (X12Validator Component)

Fires to warn about validation errors.

Syntax

public event OnValidateWarningHandler OnValidateWarning;

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

public class X12ValidatorValidateWarningEventArgs : 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 X12ValidatorValidateWarningEventArgs)

Public Class X12ValidatorValidateWarningEventArgs 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()

X12ValidationErrorDetail Type

Contains the details of a validation error.

Remarks

This represents an error that was encountered while validating an X12 document. The fields contain a description of the error and where in the document it occurred.

The following fields are available:

Fields

Column
int (read-only)

Default: 0

The column number where the error occurred.

ComponentIndex
int (read-only)

Default: 1

This field holds the position of the component element where the error occurred.

ElementIndex
int (read-only)

Default: 1

This field holds the position of the element where the error occurred.

ErrorCode
string (read-only)

Default: "0"

The ErrorCode field contains the type of error encountered.

ErrorMessage
string (read-only)

Default: ""

ErrorMessage is a textual description of the error.

ErrorType
int (read-only)

Default: 0

Indicates the level of the document where the error was encountered. Possible values include:

1Interchange
2Functional group
3Transaction set
4Segment
5Element

FGroupIndex
int (read-only)

Default: 1

This field holds the position of the functional group where the error occurred.

InterchangeIndex
int (read-only)

Default: 1

This field holds the position of the interchange where the error occurred.

Line
int (read-only)

Default: 0

The line number where the error occurred.

Position
long (read-only)

Default: 0

This field holds the byte position in the EDI stream where the error occurred.

SegmentIndex
int (read-only)

Default: 1

This field is the index of the segment where the error occurred.

SegmentTag
string (read-only)

Default: ""

This field specifies the tag name of the segment where the error occurred.

TransactionSetIndex
int (read-only)

Default: 1

This field holds the position of the message where the error occurred.

Config Settings (X12Validator 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.

X12Validator Config Settings

InputFormat:   The format of the input X12 document for validation.

This setting controls the type of input X12 document for validation. Possible values are:

InputFormatMeaning
0 (default)X12
1XML
MaxValidationErrors:   The maximum number of validation errors to return.

This setting controls the maximum number of validation errors that will be returned during the validation process. The default value is 200.

Trappable Errors (X12Validator Component)

X12Validator 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.
1201   The index is out of range.
1202   The selected ACK type is invalid.
1203   Encountered an error while validating the UNA segment.