【发布时间】:2016-03-24 14:50:27
【问题描述】:
在我们的应用程序中,我们使用一个 Web 服务,该服务提供肥皂响应 XML(文档样式)。
当我检查 Web 服务提供商时,他们只是一个转换的接口 他们从不同来源获得的响应节点值(SubscriberContextIdentifier)到 MemberEffectiveTimestamp 节点并提供与我们相同的响应。
<SubscriberContextIdentifier>20152201846166</SubscriberContextIdentifier>
在下面的 xml 中转换为 MemberEffectiveTimestamp 节点
响应 XML 示例:
<ct:PersonName>
<ct:FirstName>MICHAEL</ct:FirstName>
<ct:Middle1Name>J</ct:Middle1Name>
<ct:LastName>ROSSMAN</ct:LastName>
</ct:PersonName>
<ct:BirthDate>1979-09-10</ct:BirthDate>
<ct:GenderCode>M</ct:GenderCode>
<ct:MaritalStatusCode>SNGL</ct:MaritalStatusCode>
<ct:MemberSequenceNumber>1</ct:MemberSequenceNumber>
<ct:SmokerStatusCode>UNK</ct:SmokerStatusCode>
<ct:MemberEffectiveTimestamp>2015-08-08T18:46:16.6Z</ct:MemberEffectiveTimestamp>
<ct:TimeTracking>
<ct:UpdateTimestamp>2014-11-08T23:36:48.6</ct:UpdateTimestamp>
<ct:AsOfDate>2014-11-08</ct:AsOfDate>
</ct:TimeTracking>
问题:
我需要取回第一个提供者提供给接口团队的值,即 MemberEffectiveTimestamp 中的 SubscriberContextIdentifier
现有代码:
if (member.getMemberEffectiveTimestamp()!= null) {
final EntityIdTypeWithChangedAtt.IdValueType idValueType = factory
.createEntityIdTypeWithChangedAttIdValueType();
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyyDDDHHmmssS");
System.out.println("Memeber Effective Timestamp -->"+member.getMemberEffectiveTimestamp().toGregorianCalendar().getTime());
System.out.println("Memeber Effective Timestamp after conversion -->"+sdf.format(member.getMemberEffectiveTimestamp().toGregorianCalendar().getTime()));
idValueType.setValue(sdf.format(member.getMemberEffectiveTimestamp().toGregorianCalendar().getTime()));
idValueType.setName("SubscriberContextIdentifier");
idValueLt.add(idValueType);
}
XSD 文件:
<xsd:element name="MemberEffectiveTimestamp" type="bt:Timestamp"
minOccurs="0"/>
<xsd:simpleType name="Timestamp">
<xsd:restriction base="xsd:dateTime"/>
输出:
Memeber Effective Timestamp -->Sat Aug 08 18:46:16 EDT 2015
Memeber Effective Timestamp after conversion -->201588184616600
当我从响应 xml 中检索值时,如果您比较毫秒值,则会错过她。
现在谁能将 XMLGregorianCalendar 转换为日期。
【问题讨论】:
-
如何“错过”毫秒? XML 元素的小数秒值是
.6,您的格式化日期以毫秒为单位显示600。