Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从XML消息中查找模式,从XML生成类并在JAVA中反序列化_Java_Xml_Xsd_Deserialization_Xml Deserialization - Fatal编程技术网

从XML消息中查找模式,从XML生成类并在JAVA中反序列化

从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:

我是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: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”