我有来自FedEx网络服务的xml响应,如下所示:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<TrackReply xmlns="http://fedex.com/ws/track/v18">
<HighestSeverity>SUCCESS</HighestSeverity>
<CompletedTrackDetails>
<Notifications>
<Severity>SUCCESS</Severity>
<Source>trck</Source>
<Code>0</Code>
<Message>Request was successfully processed.</Message>
<LocalizedMessage>Request was successfully processed.</LocalizedMessage>
</Notifications>
<DuplicateWaybill>false</DuplicateWaybill>
<MoreData>false</MoreData>
<TrackDetailsCount>0</TrackDetailsCount>
<TrackDetails>
*<StatusDetail>
<CreationTime>2020-06-24T00:00:00</CreationTime>
**<Code>DL</Code>**
<Description>Delivered</Description>
<Location>
<City>New York</City>
<StateOrProvinceCode>New York</StateOrProvinceCode>
<CountryCode>US</CountryCode>
<CountryName>United States</CountryName>
<Residential>false</Residential>
</Location>
</StatusDetail>*
<CarrierCode>FDXE</CarrierCode>
</TrackDetails>
</CompletedTrackDetails>
</TrackReply>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我想存储 StatusDetail 中的信息并对其进行某些操作,特别是存储 -> DL 的代码中的信息
任何帮助将不胜感激。
首先,下载他们的WSDL:
- 登录 FedEx 开发者资源中心。
- 在页面导航区域中,单击"FedEx 网络服务"链接。
- 单击"文档和下载"链接。
- 找到您感兴趣的功能。 单击 WSDL 或 XSD
- 链接,其中显示相应服务的下载箭头旁边的"下载 WSDL 或 XSD"。
注: 您可以下载 WSDL 或 XML 格式的模式,具体取决于您选择的链接。此外,每个服务都有自己的 WSDL 指南,其中包含有关该特定服务的更多详细信息,而不是开发人员指南。将这两个指南用作最佳实践。
然后,熟悉Apache CXF。您可以使用 CXF 的wsdl2java
工具从您下载的 WSDL 生成 Java 代码。如果你使用的是Maven,他们还有一个cxf-codegen-plugin,它基本上是一样的。Gradle 没有,但很容易实现基于 CXF 类的wsdl2java
任务。
无论如何,将生成的 Java 类编译到一个库中(它真的不会经常更改(并在您的 Kotlin 项目中使用它们!
这样,您实际上不需要解析XML,因为生成的Java客户端将为您完成所有操作,并且您将直接使用JavaBeans/POJO。