从XML消息中查找模式,从XML生成类并在JAVA中反序列化
我是JAVA新手,遇到了一个非常具体的问题: 我有一个定期返回XML消息的web服务。 我希望能够将此消息反序列化为JAVA对象,但我不知道如何继续 这是我收到的一条基本xml消息:从XML消息中查找模式,从XML生成类并在JAVA中反序列化,java,xml,xsd,deserialization,xml-deserialization,Java,Xml,Xsd,Deserialization,Xml Deserialization,我是JAVA新手,遇到了一个非常具体的问题: 我有一个定期返回XML消息的web服务。 我希望能够将此消息反序列化为JAVA对象,但我不知道如何继续 这是我收到的一条基本xml消息: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <ds:tfmDataService xmlns:ds="urn:us:gov:dot:faa:atm:tfm:tfmdataservice" xmlns="urn:us:gov:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ds:tfmDataService
xmlns:ds="urn:us:gov:dot:faa:atm:tfm:tfmdataservice"
xmlns="urn:us:gov:dot:faa:atm:tfm:tfmdataservice"
xmlns:fdm="urn:us:gov:dot:faa:atm:tfm:flightdata"
xmlns:nxce="urn:us:gov:dot:faa:atm:tfm:tfmdatacoreelements"
xmlns:nxcm="urn:us:gov:dot:faa:atm:tfm:flightdatacommonmessages"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:us:gov:dot:faa:atm:tfm:tfmdataservice TFMData_Service.xsd">
<fltdOutput>
<fdm:fltdMessage acid="UAL1252" airline="UAL" arrArpt="KIAH" cdmPart="true" depArpt="KSAT" fdTrigger="FD_FLIGHT_MODIFY_MSG" flightRef="125539563" msgType="FlightModify" sensitivity="A" sourceFacility="UAL" sourceTimeStamp="2020-01-27T09:32:11Z">
<fdm:ncsmFlightModify>
<nxcm:qualifiedAircraftId>
<nxce:aircraftId>UAL1252</nxce:aircraftId>
<nxce:computerId>
<nxce:facilityIdentifier>UAL</nxce:facilityIdentifier>
</nxce:computerId>
<nxce:igtd>2020-01-27T23:30:00Z</nxce:igtd>
<nxce:departurePoint>
<nxce:airport>KSAT</nxce:airport>
</nxce:departurePoint>
<nxce:arrivalPoint>
<nxce:airport>KIAH</nxce:airport>
</nxce:arrivalPoint>
</nxcm:qualifiedAircraftId>
<nxcm:airlineData>
<nxcm:flightStatusAndSpec>
<nxcm:flightStatus>FILED</nxcm:flightStatus>
<nxcm:aircraftModel>B739</nxcm:aircraftModel>
<nxcm:aircraftspecification aircraftEngineClass="JET" numberOfAircraft="1">B739</nxcm:aircraftspecification>
</nxcm:flightStatusAndSpec>
<nxcm:eta etaType="SCHEDULED" timeValue="2020-01-28T00:28:00Z"/>
<nxcm:etd etdType="SCHEDULED" timeValue="2020-01-27T23:42:00Z"/>
<nxcm:flightTimeData airlineInTime="2020-01-28T00:37:00Z" airlineOffTime="2020-01-27T23:42:00Z" airlineOnTime="2020-01-28T00:28:00Z" airlineOutTime="2020-01-27T23:30:00Z" flightCreation="2020-01-26T23:30:38Z" originalArrival="2020-01-28T00:28:00Z" originalDeparture="2020-01-27T23:42:00Z"/>
<nxcm:diversionIndicator>NO_DIVERSION</nxcm:diversionIndicator>
<nxcm:rvsmData currentCompliance="true" equipped="true" futureCompliance="true"/>
<nxcm:arrivalFixAndTime arrTime="2020-01-28T00:03:10Z" fixName="GMANN"/>
</nxcm:airlineData>
</fdm:ncsmFlightModify>
</fdm:fltdMessage>
</fltdOutput>
</ds:tfmDataService>
1225乌克兰格里夫纳
艾尔
2020-01-27T23:30:00Z
克萨特
凯
提出
B739
B739
禁止改道
首先,我不知道应该如何找到模式位置,因为地址是urn:us:gov:dot:faa:atm:tfm:tfmdataservice TFMData_Service.xsd
我不知道如何获取这个模式描述,因为这个地址看起来不像http地址,所以我无法提取模式描述,因为我不知道从哪里下载它
我知道我需要这个模式来生成java类,该类将用于将消息反序列化为java对象。
在接收此类消息时是否可以动态生成对象,或者是否确实需要首先生成类来反序列化消息
那么,如果我能够得到描述接收到的任何xml消息的xsd,那么我应该如何生成数据反序列化所需的代码呢?它是如何工作的?有没有具体的工具可以做到这一点
提前谢谢
首先,我不知道应该如何找到模式位置,因为地址是urn:us:gov:dot:faa:atm:tfm:tfmdataservice TFMData_Service.xsd
我不知道如何获取这个模式描述,因为这个地址看起来不像http地址,所以我无法提取模式描述,因为我不知道从哪里下载它
并非所有架构都在公共域中。通常,在获得模式和/或API规范之前,您需要与提供商组织注册
我知道我需要这个模式来生成java类,该类将用于将消息反序列化为java对象。在接收此类消息时是否可以动态生成对象,或者是否确实需要首先生成类来反序列化消息
Java可以在不使用模式的情况下解析XML,但我不建议在这种情况下使用它(从政府API接收数据)。如果有可用的模式——如果没有,我会非常惊讶——那么您应该使用它。它将简化Java代码,并且您还可以在解析时根据模式进行验证
那么,如果我能够得到描述接收到的任何xml消息的xsd,那么我应该如何生成数据反序列化所需的代码呢?它是如何工作的?有没有具体的工具可以做到这一点
这是一个使用你最喜欢的搜索引擎回答的简单问题。搜索“JAXB”