我收到来自 fedex webservices 的 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 的 Code 中的信息
任何帮助将不胜感激。
请您参考如下方法:
首先,下载他们的 WSDL:
- 登录FedEx Developer Resource Center .
- 在页面的导航区域中,点击“FedEx Web Services”链接。
- 点击“文档和下载”链接。
- 找到您感兴趣的功能。
- 点击相应服务下载箭头旁边显示“下载 WSDL 或 XSD”的 WSDL 或 XSD 链接。
注意:您可以下载 WSDL 或 XML 格式的架构,具体取决于您选择的链接。此外,每个服务都有自己的 WSDL 指南,其中包含有关该特定服务的比开发人员指南更详细的信息。使用这两个指南作为最佳实践。
然后,熟悉 Apache CXF 。您可以使用CXF's wsdl2java用于从您下载的 WSDL 生成 Java 代码的工具。如果您使用 Maven,他们还有一个 cxf-codegen-plugin ,这基本上是一样的。 Gradle 没有,但是it's easy实现基于 CXF 类的 wsdl2java 任务。
无论如何,将生成的 Java 类编译到一个库中(它确实不会经常更改)并在您的 Kotlin 项目中使用它们!
这样,您实际上不需要解析 XML,因为生成的 Java 客户端将为您完成所有工作,并且您将直接使用 JavaBeans/POJO。




