我有一个xml文档,每个文档都用于循环各方。我需要获取partyID和出生日期。我正在获取partyID,但出生日期显示为0001-01-01T00:00:00。
XML文档
<Integration>
<Case>
<CaseEvent Date="06/14/2010" ID="252945068">
<PartyID>9919636</PartyID>
</CaseEvent>
<CaseParty ID="9919636">
<DateOfBirth>04/27/1910</DateOfBirth>
</CaseParty>
</Case>
<IntegrationConditions>
<IntegrationCondition Word="TAWQ" Description="Inserts">
<NotificationEvent notificationType="TAWQ" elementKey="252945068">InsertSomething</NotificationEvent>
</IntegrationCondition>
</IntegrationConditions>
预期结果
<InsertPWBRorAOS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="">
<RelatedParties>
<CaseParty>
<DateOfBirth>04/27/1910</DateOfBirth>
<PartyId>9919636</PartyId>
</CaseParty>
</RelatedParties>
</InsertPWBRorAOS>
错误的结果
<InsertPWBRorAOS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="">
<RelatedParties>
<CaseParty>
<DateOfBirth>0001-01-01T00:00:00</DateOfBirth>
<PartyId>9919636</PartyId>
</CaseParty>
</RelatedParties>
</InsertPWBRorAOS>
我的VB.NET代码
Public Shared Sub ProcessInsertPWBRorAOS(ByRef aobjXmlInputDoc As System.Xml.XmlDocument, ByVal aobjxmlNotificationEventNode As XmlNode)
Dim objInsertPWBRorAOS As MMGService.InsertPWBRorAOS = New MMGService.InsertPWBRorAOS
Dim objCaseParty As MMGService.CaseParty
Dim objxmlEventPartyIDNode As XmlNode
Dim strEventId As String
strEventId = aobjxmlNotificationEventNode.SelectSingleNode("@elementKey").InnerText
objCaseParty = New MMGService.CaseParty()
'Loop through all PartyIDNodes in CaseEvent with ID equal to NotificationEvent's elementKey
For Each objxmlEventPartyIDNode In aobjXmlInputDoc.DocumentElement.SelectNodes("Case/CaseEvent[@ID=" + strEventId + "]/PartyID")
strPartyID = objxmlEventPartyIDNode.InnerText
objCaseParty.PartyId = strPartyID
'DateofBirth
objCaseParty.DateOfBirth = dtmDateOfBirth
objInsertPWBRorAOS.RelatedParties(i) = objCaseParty
i += 1
Next
End Sub
答案 0 :(得分:0)
我偶然发现了您这个未解决的问题。已经快一年了。根据到目前为止的评论,这个问题似乎仍然是未解决的。因此,我想为您提供答案,希望它对您仍然有用。
我尚不清楚真正的问题是什么。结果中的出生日期值可能有两个问题。
日期似乎尚未设定;它设置为0001年1月1日。这是Date
(System.DateTime
)变量的最小值,也是未明确初始化时该数据类型的类成员变量的初始值。 / p>
日期值的格式不同(与“预期结果”部分相比)。
我将在下面解决两个潜在问题。
关于点1:
字段objCaseParty.DateOfBirth
设置为变量dtmDateOfBirth
的值。因此,似乎dtmDateOfBirth
变量也未正确设置/初始化。我建议您在代码中搜索对dtmDateOfBirth
变量的所有引用。也许您忘记了在某个地方设置它的值,或者您想另外检查出生日期是否尚未设置(并终止执行并在必要时警告用户)。
关于点2:
通常,Date
类型的任何字段都将使用yyyy-MM-ddTHH:mm:ss
格式的XML存储/序列化。
如果只想删除时间部分,则可以使用/修改XML架构定义(XSD),并将字段的类型明确包含/更改为xs:date
。 (最终,XSD可能会包含类似于
<xs:element name="DateOfBirth" type="xs:date"/>
之类的行。)进行此更改后,日期将以yyyy-MM-dd
的格式存储。
如果您希望日期值以MM/dd/yyyy
的格式显式存储,那么除了将其作为字符串值存储/序列化外,我没有其他方法。它将需要一些额外的编程,但是StackOverflow上已经有几个可用的答案,可以助您一臂之力,例如:
关于“每个循环”的说明:
在For Each循环中,您使用了迭代变量i
。该变量在For Each循环中递增,但在循环开始前未用初始值声明。我猜您缺少Dim i As Integer = 0
之类的行。