hi

here is my first stab at creating a windows form to pick the collection year / collection number / sequence number etc to generate xml file

we only use this for olass provision so some entities aren't included

tested this through the latest LIS and works a treat… probably of no use to anyone, and needs tidying up, but thought i would share nonetheless!

——————————-

Imports System.Windows.Forms
Imports System.Xml
Imports System.Xml.Linq
Imports System.Text
Imports System.Linq
Imports System.ComponentModel
Imports System.Xml.Schema

Partial Public Class GenerateXMLExport

Private export As ExportDataContext
Private learning As LearningDataContext
Private errors As Boolean = False

#Region " Page Events "

Public Sub New()

InitializeComponent()

export = New ExportDataContext
learning = New LearningDataContext

LoadCollectionYears()

End Sub

Private Sub cboCollectionYear_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboCollectionYear.SelectedValueChanged

With cboCollectionYear
If .SelectedValue > 0 Then LoadCollections(.SelectedValue)
End With

End Sub

Private Sub cboCollection_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboCollection.SelectedValueChanged

With cboCollection
If .SelectedValue > 0 Then LoadCollectionTypes(.SelectedValue)
End With

End Sub

Private Sub cboCollectionType_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboCollectionType.SelectedValueChanged

If cboCollectionType.SelectedValue > 0 Then btnSave.Enabled = True

End Sub

Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click

Me.Close()

End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click

ProcessXML()

End Sub

#End Region

#Region " Populate Combo Boxes "

Private Sub LoadCollectionYears()

Dim ds As BindingList(Of CollectionYear) = QueryCollectionYears()

cboCollectionYear.DataSource = ds

lblTransmissionNumber.DataBindings.Add("Text", ds, "CurrentTransmissionNumber")

End Sub

Private Sub LoadCollections(ByVal selectedYear As Integer)

Dim ds As BindingList(Of Collection) = QueryCollections(selectedYear)

cboCollection.DataSource = ds

End Sub

Private Sub LoadCollectionTypes(ByVal selectedCollection As Integer)

Dim ds As BindingList(Of CollectionType) = QueryCollectionTypes(selectedCollection)

cboCollectionType.DataSource = ds

End Sub

#End Region

#Region " Queries "

Private Function QueryCollectionYears() As BindingList(Of CollectionYear)

Dim query = From cy In export.CollectionYears
Where (cy.Enabled = True)
Order By cy.DateFrom Descending
Select cy

Return New BindingList(Of CollectionYear)(query.ToList)

End Function

Private Function QueryCollections(ByVal selectedYear As Integer) As BindingList(Of Collection)

Dim query = From c In
(From c In export.Collections
Where c.Enabled = True And c.COLLECTIONYEARFK = selectedYear
Order By c.OpenDate Ascending
Select c).ToList
Select New Collection With {.COLLECTIONPK = c.COLLECTIONPK,
.CollectionName = c.CollectionName + " – " + c.OpenDate.ToString("dd/MM/yyyy") + " to " + c.CloseDate.ToString("dd/MM/yyyy"),
.OpenDate = c.OpenDate,
.CloseDate = c.CloseDate}

Return New BindingList(Of Collection)(query.ToList)

End Function

Private Function QueryCollectionTypes(ByVal selectedCollection As Integer) As BindingList(Of CollectionType)

Dim query = From ct In export.CollectionTypes
Join c_ct In export.Collection_CollectionTypes On c_ct.COLLECTIONTYPEFK Equals ct.COLLECTIONTYPEPK
Where ct.Enabled = True And c_ct.Enabled = True And c_ct.COLLECTIONFK = selectedCollection
Order By ct.CollectionType Ascending
Select ct

Return New BindingList(Of CollectionType)(query.ToList)

End Function

Private Function QueryLearners(ByRef data As List(Of GenerateXMLResult)) As List(Of XmlLearner)

Dim query = From d In
(From d In data
Select d.PrisonerNumber, d.LearnerReferenceNumber, d.Forename, d.Surname, d.NINO, d.ULN, d.Ethnicity, d.LearningDifficultiesDisabilities,
d.LearningDifficulty, d.DisabilityOrHealthProblem, d.PriorAttainment, d.DOB, d.Sex, d.PrisonAddress, d.PrisonPostcode).Distinct
Select New XmlLearner() With {.PrisonerNumber = d.PrisonerNumber,
.Forename = d.Forename,
.Surname = d.Surname,
.NINO = d.NINO,
.ULN = d.ULN,
.LearnerReferenceNumber = d.LearnerReferenceNumber,
.Ethnicity = d.Ethnicity,
.LearningDifficultiesDisabilities = d.LearningDifficultiesDisabilities,
.LearningDifficulty = d.LearningDifficulty,
.DisabilityOrHealthProblem = d.DisabilityOrHealthProblem,
.PriorAttainment = d.PriorAttainment,
.DOB = d.DOB,
.Sex = d.Sex,
.PrisonAddress = d.PrisonAddress,
.PrisonPostcode = d.PrisonPostcode}

Return New List(Of XmlLearner)(query.ToList)

End Function

Private Function QueryAims(ByRef data As List(Of GenerateXMLResult)) As List(Of XmlAim)

Dim query = From d In data
Select New XmlAim With {.LearnerRefNumber = d.LearnerReferenceNumber,
.LearnAimRef = d.AimCode,
.AimType = d.AimType,
.AimSeqNumber = d.AimSeqNumber,
.LearnStartDate = d.StartDate,
.LearnPlanEndDate = d.PlannedEndDate,
.FundModel = d.FundingModel,
.ProgType = d.ProgType,
.MainDelMeth = d.MainDeliveryMethod,
.DelMode = d.DeliveryMode,
.DelLocPostCode = d.DeliveryPostcode,
.ContOrgCode = d.ContractingOrganisationCode,
.CompStatus = d.CompletionStatus,
.LearnActEndDate = d.ActualEndDate,
.WithdrawReason = d.ReasonLearningEnded,
.OutcomeInd = d.LearningOutcome,
.OutGrade = d.LearningOutcomeGrade,
.SourceOfFunding = d.SourceOfFunding,
.LearningDeliveryMonitoring = d.LearningDeliveryMonitoring,
.ProviderSpecifiedDeliveryMonitoring = d.ProviderSpecifiedDeliveryMonitoring}

Return New List(Of XmlAim)(query.ToList)

End Function

Private Function GenerateXMLData() As List(Of GenerateXMLResult)

'Get the 'From' date as the beginning of the academic year
Dim fromDate, toDate As Date
fromDate = (From cy As CollectionYear In CType(cboCollectionYear.DataSource, BindingList(Of CollectionYear))
Where (cy.COLLECTIONYEARPK = cboCollectionYear.SelectedValue)
Select cy.DateFrom).First

'Get the 'To' date as the end of the specific collection run
toDate = (From c As Collection In CType(cboCollection.DataSource, BindingList(Of Collection))
Where (c.COLLECTIONPK = cboCollection.SelectedValue)
Select c.CloseDate).First

Dim query = From d As GenerateXMLResult In learning.GenerateXML(Db.PassPhrase, fromDate, toDate)
Select d

Return New List(Of GenerateXMLResult)(query.ToList)

End Function

#End Region

#Region " XML Processing "

Private Sub ProcessXML()

'get the raw data
Dim data As List(Of GenerateXMLResult) = GenerateXMLData()

Dim xsi As XNamespace = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance")
Dim ns As XNamespace = XNamespace.Get("http://www.theia.org.uk/ILR/2011-12/1")

'declaration
Dim ILR As New XDocument
ILR.Declaration = New XDeclaration("1.0", "UTF-8", Nothing)

'comment
ILR.Add(New XComment("File created by " & Db.CurrentUser.FullName & " on " & Date.Now.ToString("dd/MM/yyyy hh:mm:ss")))

'
Dim message As New XElement(ns + "Message")
message.Add(New XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName))
message.Add(New XAttribute(xsi + "schemaLocation", "http://www.theia.org.uk/ILR/2011-12/1 ILR-2011-12-Structure.xsd"))

ProcessHeader(message, ns)
ProcessLearningProvider(message, ns)
'ProcessLearnerDeletion(message, ns)

Dim learners As List(Of XmlLearner) = QueryLearners(data)
Dim aims As List(Of XmlAim) = QueryAims(data)
ProcessLearners(message, ns, learners, aims)

'add root node to document
ILR.Add(message)

'save document
Dim filename As String

ILR.Save("C:ILR-A-10000115-1112-0003-01.xml")

ValidateAgainstSchema(ILR, ns)

End Sub

Private Sub XSDErrors(ByVal o As Object, ByVal e As ValidationEventArgs)
txtOutput.Text += e.Message.ToString & vbCrLf
errors = True
End Sub

Sub ValidateAgainstSchema(ByVal ilr As XDocument, ByVal ns As XNamespace)

Dim schemas As XmlSchemaSet = New XmlSchemaSet()
schemas.Add(ns.NamespaceName, System.IO.Path.GetFullPath(Application.StartupPath & "….ExportXSD201112ILR-2011-12-Structure.xsd"))
txtOutput.Text += "Attempting to validate" & vbCrLf
errors = False
ilr.Validate(schemas, AddressOf XSDErrors)
txtOutput.Text += "ILR " & IIf(errors, "did not validate", "validated") & vbCrLf

End Sub

Private Sub ProcessHeader(ByVal message As XElement, ByVal ns As XNamespace)

'.
Dim header As New XElement(ns + "Header")
message.Add(header)

'..
Dim collectionDetails As New XElement(ns + "CollectionDetails")
header.Add(collectionDetails)

'…
collectionDetails.Add(New XElement(ns + "Collection", (From cy As CollectionYear In CType(cboCollectionYear.DataSource, BindingList(Of CollectionYear))
Where (cy.COLLECTIONYEARPK = cboCollectionYear.SelectedValue) Select cy.CollectionName).First))

'…
collectionDetails.Add(New XElement(ns + "Year", (From cy As CollectionYear In CType(cboCollectionYear.DataSource, BindingList(Of CollectionYear))
Where (cy.COLLECTIONYEARPK = cboCollectionYear.SelectedValue) Select cy.YearOfCollection).First))

'…
collectionDetails.Add(New XElement(ns + "FilePreparationDate", Now.Date.ToString("yyyy-MM-dd")))

'..
Dim source As New XElement(ns + "Source")
header.Add(source)

'…
source.Add(New XElement(ns + "ProtectiveMarking", (From cy As CollectionYear In CType(cboCollectionYear.DataSource, BindingList(Of CollectionYear))
Where (cy.COLLECTIONYEARPK = cboCollectionYear.SelectedValue) Select cy.ProtectiveMarking).First))

'…
source.Add(New XElement(ns + "UKPRN", (From cy As CollectionYear In CType(cboCollectionYear.DataSource, BindingList(Of CollectionYear))
Where (cy.COLLECTIONYEARPK = cboCollectionYear.SelectedValue) Select cy.UKPRN).First))

'…
source.Add(New XElement(ns + "TransmissionNumber", (From cy As CollectionYear In CType(cboCollectionYear.DataSource, BindingList(Of CollectionYear))
Where (cy.COLLECTIONYEARPK = cboCollectionYear.SelectedValue) Select cy.CurrentTransmissionNumber).First.ToString.PadLeft(4, "0")))

'…
source.Add(New XElement(ns + "TransmissionType", (From ct As CollectionType In CType(cboCollectionType.DataSource, BindingList(Of CollectionType))
Where (ct.COLLECTIONTYPEPK = cboCollectionType.SelectedValue) Select ct.CollectionType).First))

'…
source.Add(New XElement(ns + "SoftwareSupplier", (From cy As CollectionYear In CType(cboCollectionYear.DataSource, BindingList(Of CollectionYear))
Where (cy.COLLECTIONYEARPK = cboCollectionYear.SelectedValue) Select cy.SoftwareSupplier).First))

'…
source.Add(New XElement(ns + "SoftwarePackage", My.Application.Info.ProductName))

'…
source.Add(New XElement(ns + "Release", My.Application.Info.Version))

'…
source.Add(New XElement(ns + "SerialNo", (From cy As CollectionYear In CType(cboCollectionYear.DataSource, BindingList(Of CollectionYear))
Where (cy.COLLECTIONYEARPK = cboCollectionYear.SelectedValue) Select cy.SerialNumber).First))

'…
source.Add(New XElement(ns + "DateTime", Now.ToString("yyyy-MM-ddTHH:mm:ss")))

End Sub

Private Sub ProcessLearningProvider(ByVal message As XElement, ByVal ns As XNamespace)

'.
Dim learningProvider As New XElement(ns + "LearningProvider")
message.Add(learningProvider)

'..
learningProvider.Add(New XElement(ns + "UKPRN", (From cy As CollectionYear In CType(cboCollectionYear.DataSource, BindingList(Of CollectionYear))
Where (cy.COLLECTIONYEARPK = cboCollectionYear.SelectedValue) Select cy.UKPRN).First))

'..
learningProvider.Add(New XElement(ns + "UPIN", (From cy As CollectionYear In CType(cboCollectionYear.DataSource, BindingList(Of CollectionYear))
Where (cy.COLLECTIONYEARPK = cboCollectionYear.SelectedValue) Select cy.UPIN).First))

End Sub

Private Sub ProcessLearnerDeletion(ByVal message As XElement, ByVal ns As XNamespace)

'.
Dim learnerDeletion As New XElement(ns + "LearnerDeletion")
message.Add(learnerDeletion)

'..
Dim learnRefNumber As New XElement(ns + "LearnRefNumber", "123456789100")
learnerDeletion.Add(learnRefNumber)

End Sub

Private Sub ProcessLearners(ByVal message As XElement, ByVal ns As XNamespace, ByRef learners As List(Of XmlLearner), ByRef aims As List(Of XmlAim))

For Each learner As XmlLearner In learners
'.
Dim learnerElement As New XElement(ns + "Learner")
message.Add(learnerElement)

'..
Dim learnerRefNumberElement As New XElement(ns + "LearnRefNumber", learner.LearnerReferenceNumber)
learnerElement.Add(learnerRefNumberElement)

Dim learnerReferenceNumber As String = learner.LearnerReferenceNumber

'..
If Not String.IsNullOrEmpty(learner.ULN) Then learnerElement.Add(New XElement(ns + "ULN", learner.ULN))

'..
learnerElement.Add(New XElement(ns + "FamilyName", learner.Surname))

'..
learnerElement.Add(New XElement(ns + "GivenNames", learner.Forename))

'..
learnerElement.Add(New XElement(ns + "DateOfBirth", learner.DOB.ToString("yyyy-MM-dd")))

'..
learnerElement.Add(New XElement(ns + "Ethnicity", learner.Ethnicity))

'..
learnerElement.Add(New XElement(ns + "Sex", learner.Sex))

'..
learnerElement.Add(New XElement(ns + "LLDDInd", learner.LearningDifficultiesDisabilities))

'..
If Not String.IsNullOrEmpty(learner.NINO) Then learnerElement.Add(New XElement(ns + "NINumber", learner.NINO))

'..
learnerElement.Add(New XElement(ns + "PriorAttain", learner.PriorAttainment))

ProcessLearnerContact(learnerElement, ns, learner)

ProcessLearnerContactPreferences(learnerElement, ns)

If learner.LearningDifficultiesDisabilities = 1 Then ProcessLLDDandHealthProblem(learnerElement, ns, learner)

ProcessLearnerProviderSpecifiedMonitoring(learnerElement, ns, learner)

Dim learnerAims As List(Of XmlAim) = (From la As XmlAim In aims
Where la.LearnerRefNumber = learnerReferenceNumber
Select la).ToList

ProcessLearningDelivery(learnerElement, ns, learnerAims)

Next

End Sub

Private Sub ProcessLearnerContact(ByRef learnerElement As XElement, ByVal ns As XNamespace, ByRef learner As XmlLearner)

'***CURRENT ADDRESS***

'..
Dim learnerContactElement As New XElement(ns + "LearnerContact")
learnerElement.Add(learnerContactElement)

'…
learnerContactElement.Add(New XElement(ns + "LocType", 1))

'…
learnerContactElement.Add(New XElement(ns + "ContType", 2))

'…
Dim postAddElement As New XElement(ns + "PostAdd")
learnerContactElement.Add(postAddElement)

'….
postAddElement.Add(New XElement(ns + "AddLine1", learner.PrisonAddress))

'*********************

'***CURRENT POSTCODE***

'..
learnerContactElement = New XElement(ns + "LearnerContact")
learnerElement.Add(learnerContactElement)

'…
learnerContactElement.Add(New XElement(ns + "LocType", 2))

'…
learnerContactElement.Add(New XElement(ns + "ContType", 2))

'…
learnerContactElement.Add(New XElement(ns + "PostCode", learner.PrisonPostcode))

End Sub

Private Sub ProcessLLDDandHealthProblem(ByRef learnerElement As XElement, ByVal ns As XNamespace, ByRef learner As XmlLearner)

Dim llddAndHealthProblemElement As XElement

'***Learning Difficulty

If learner.LearningDifficulty.HasValue Then
'..
llddAndHealthProblemElement = New XElement(ns + "LLDDandHealthProblem")
learnerElement.Add(llddAndHealthProblemElement)

'…
llddAndHealthProblemElement.Add(New XElement(ns + "LLDDType", "LD"))

'…
llddAndHealthProblemElement.Add(New XElement(ns + "LLDDCode", learner.LearningDifficulty))
End If

'***Disability Or Health Problem

If learner.DisabilityOrHealthProblem.HasValue Then
'..
llddAndHealthProblemElement = New XElement(ns + "LLDDandHealthProblem")
learnerElement.Add(llddAndHealthProblemElement)

'…
llddAndHealthProblemElement.Add(New XElement(ns + "LLDDType", "DS"))

'…
llddAndHealthProblemElement.Add(New XElement(ns + "LLDDCode", learner.DisabilityOrHealthProblem))
End If

End Sub

Private Sub ProcessLearnerContactPreferences(ByRef learnerElement As XElement, ByVal ns As XNamespace)

Dim contactPreferenceElement As XElement

'..
contactPreferenceElement = New XElement(ns + "ContactPreference")
learnerElement.Add(contactPreferenceElement)

'…
contactPreferenceElement.Add(New XElement(ns + "ContPrefType", "RUI"))

'…
contactPreferenceElement.Add(New XElement(ns + "ContPrefCode", 1))

'..
contactPreferenceElement = New XElement(ns + "ContactPreference")
learnerElement.Add(contactPreferenceElement)

'…
contactPreferenceElement.Add(New XElement(ns + "ContPrefType", "RUI"))

'…
contactPreferenceElement.Add(New XElement(ns + "ContPrefCode", 2))

'..
contactPreferenceElement = New XElement(ns + "ContactPreference")
learnerElement.Add(contactPreferenceElement)

'…
contactPreferenceElement.Add(New XElement(ns + "ContPrefType", "PMC"))

'…
contactPreferenceElement.Add(New XElement(ns + "ContPrefCode", 1))

'..
contactPreferenceElement = New XElement(ns + "ContactPreference")
learnerElement.Add(contactPreferenceElement)

'…
contactPreferenceElement.Add(New XElement(ns + "ContPrefType", "PMC"))

'…
contactPreferenceElement.Add(New XElement(ns + "ContPrefCode", 2))

'..
contactPreferenceElement = New XElement(ns + "ContactPreference")
learnerElement.Add(contactPreferenceElement)

'…
contactPreferenceElement.Add(New XElement(ns + "ContPrefType", "PMC"))

'…
contactPreferenceElement.Add(New XElement(ns + "ContPrefCode", 3))

End Sub

Private Sub ProcessLearnerProviderSpecifiedMonitoring(ByRef learnerElement As XElement, ByVal ns As XNamespace, ByRef learner As XmlLearner)

'..
Dim learnerProviderSpecifiedMonitoringElement As New XElement(ns + "ProviderSpecLearnerMonitoring")
learnerElement.Add(learnerProviderSpecifiedMonitoringElement)

'…
learnerProviderSpecifiedMonitoringElement.Add(New XElement(ns + "LearnOccurCode", "A"))

'…
learnerProviderSpecifiedMonitoringElement.Add(New XElement(ns + "ProvSpecLearnMon", learner.PrisonerNumber))

End Sub

Private Sub ProcessLearningDelivery(ByRef learnerElement As XElement, ByVal ns As XNamespace, ByRef aims As List(Of XmlAim))

For Each aim As XmlAim In aims
'..
Dim learningDeliveryElement As New XElement(ns + "LearningDelivery")
learnerElement.Add(learningDeliveryElement)

'…
learningDeliveryElement.Add(New XElement(ns + "LearnAimRef", aim.LearnAimRef))

'…
learningDeliveryElement.Add(New XElement(ns + "AimType", aim.AimType))

'…
learningDeliveryElement.Add(New XElement(ns + "AimSeqNumber", aim.AimSeqNumber))

'…
learningDeliveryElement.Add(New XElement(ns + "LearnStartDate", aim.LearnStartDate.ToString("yyyy-MM-dd")))

'…
learningDeliveryElement.Add(New XElement(ns + "LearnPlanEndDate", aim.LearnPlanEndDate.ToString("yyyy-MM-dd")))

'…
learningDeliveryElement.Add(New XElement(ns + "FundModel", aim.FundModel))

'…
learningDeliveryElement.Add(New XElement(ns + "ProgType", aim.ProgType))

'…
learningDeliveryElement.Add(New XElement(ns + "MainDelMeth", aim.MainDelMeth))

'…
learningDeliveryElement.Add(New XElement(ns + "DelMode", aim.DelMode))

'…
learningDeliveryElement.Add(New XElement(ns + "DelLocPostCode", aim.DelLocPostCode))

'…
learningDeliveryElement.Add(New XElement(ns + "ContOrgCode", aim.ContOrgCode))

'…
learningDeliveryElement.Add(New XElement(ns + "CompStatus", aim.CompStatus))

'…
If aim.LearnActEndDate.HasValue Then learningDeliveryElement.Add(New XElement(ns + "LearnActEndDate", CDate(aim.LearnActEndDate).ToString("yyyy-MM-dd")))

'…
If aim.WithdrawReason.HasValue Then learningDeliveryElement.Add(New XElement(ns + "WithdrawReason", aim.WithdrawReason))

'…
If aim.OutcomeInd.HasValue Then learningDeliveryElement.Add(New XElement(ns + "OutcomeInd", aim.OutcomeInd))

'…
If Not String.IsNullOrEmpty(aim.OutGrade) Then learningDeliveryElement.Add(New XElement(ns + "OutGrade", aim.OutGrade))

ProcessLearningDeliveryFAM(learningDeliveryElement, ns, aim)

ProcessLearningDeliveryProviderMonitoring(learningDeliveryElement, ns, aim)

Next

End Sub

Private Sub ProcessLearningDeliveryFAM(ByRef learningDeliveryElement As XElement, ByVal ns As XNamespace, ByRef aim As XmlAim)

Dim learningDeliveryFAMElement As XElement

'***Source of Funding***

'…
learningDeliveryFAMElement = New XElement(ns + "LearningDeliveryFAM")
learningDeliveryElement.Add(learningDeliveryFAMElement)

'….
learningDeliveryFAMElement.Add(New XElement(ns + "LearnDelFAMType", "SOF"))

'….
learningDeliveryFAMElement.Add(New XElement(ns + "LearnDelFAMCode", aim.SourceOfFunding))

'***Full or Co-Funding Indicator***

'…
learningDeliveryFAMElement = New XElement(ns + "LearningDeliveryFAM")
learningDeliveryElement.Add(learningDeliveryFAMElement)

'….
learningDeliveryFAMElement.Add(New XElement(ns + "LearnDelFAMType", "FFI"))

'….
learningDeliveryFAMElement.Add(New XElement(ns + "LearnDelFAMCode", 1))

'***Learning Delivery Monitoring***

'…
learningDeliveryFAMElement = New XElement(ns + "LearningDeliveryFAM")
learningDeliveryElement.Add(learningDeliveryFAMElement)

'….
learningDeliveryFAMElement.Add(New XElement(ns + "LearnDelFAMType", "LDM"))

'….
learningDeliveryFAMElement.Add(New XElement(ns + "LearnDelFAMCode", aim.LearningDeliveryMonitoring))

End Sub

Private Sub ProcessLearningDeliveryProviderMonitoring(ByRef learningDeliveryElement As XElement, ByVal ns As XNamespace, ByRef aim As XmlAim)

If Not String.IsNullOrEmpty(aim.ProviderSpecifiedDeliveryMonitoring) Then

'…
Dim learningDeliveryProviderMonitoringElement As New XElement(ns + "ProviderSpecDeliveryMonitoring")
learningDeliveryElement.Add(learningDeliveryProviderMonitoringElement)

'….
learningDeliveryProviderMonitoringElement.Add(New XElement(ns + "LearnDelOccurCode", "A"))

'….
learningDeliveryProviderMonitoringElement.Add(New XElement(ns + "ProvSpecLearnDelMon", aim.ProviderSpecifiedDeliveryMonitoring))

End If

End Sub

#End Region

End Class