在Java中,当我将XML解析为对象时,如何注释我的元素,该元素应该是我的类,而不是XML的根元素

在Java中,当我将XML解析为对象时,如何注释我的元素,该元素应该是我的类,而不是XML的根元素,java,xml,parsing,annotations,unmarshalling,Java,Xml,Parsing,Annotations,Unmarshalling,我有一个xml,如下所示: <?xml version="1.0" encoding="UTF-8"?> <input> <flight flight="LX179" dep="SIN" arr="ZRH" aircraftRegistration="HBJMN" paxWeight="10000" /> </input> 我的解析方法 private void beolvasas() { try {

我有一个xml,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<input>
    <flight flight="LX179" dep="SIN" arr="ZRH" aircraftRegistration="HBJMN"
    paxWeight="10000" />    
</input>
我的解析方法

 private void beolvasas() {


    try {
        File file = new File("/input.xml");
        JAXBContext jaxbContext = JAXBContext.newInstance(Input.class);

        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
       Input flight = (Input) jaxbUnmarshaller.unmarshal(file);

        flightList.add(flight);

    } catch (JAXBException ex) {
        ex.printStackTrace();
    }   

}

private void kiir() {
    for (Input input : flightList) {
        System.out.println(input);

    }
}
我的输入类如下所示:

@XmlRootElement
public class Input {

private Flight flight;

@XmlRootElement
public class Input {


private List<Flight> lista;

public Input() {
}

public Input(List<Flight> list) {
    this.lista = lista;
}

public List<Flight> getList() {
    return lista;
}

@XmlElement
public void setList(List<Flight> list) {
    this.lista = list;
}
这是最后一个xml文件

<?xml version="1.0" encoding="UTF-8"?>
<masterdata>
<airlines>
    <airline id="1" name="Lufthansa" code="LH" minUnderload="1000"/>
    <airline id="2" name="Swiss" code="LX" minUnderload="500" />
</airlines>

<aircraftTypes>
    <aircraftType id="380" name="Airbus 380-800" maxZFW="361000" maxLAW="386000"                      maxTOW="560000" maxTXW="562000" maxFuel="256000"/>        <aircraftType id="747" name="Boeing 747-8"   maxZFW="295289" maxLAW="312072" maxTOW="447696" maxTXW="449056" maxFuel="193280"/>
    <aircraftType id="340" name="Airbus 340-600" maxZFW="245000" maxLAW="259000" maxTOW="368000" maxTXW="369200" maxFuel="163600"/>
</aircraftTypes>

<aircrafts>
    <aircraft id="11"  ownerAirlineId="1" registration="DAIML" typeId="380" startw="276800"  />
    <aircraft id="12"  ownerAirlineId="1" registration="DABVT" typeId="747" startw="162400"  />
    <aircraft id="13"  ownerAirlineId="1" registration="DAIHQ" typeId="340" startw="177020"  />

    <aircraft id="21"  ownerAirlineId="2" registration="HBJMN" typeId="340" startw="176445"  />
</aircrafts>

理论上你有这个

<input>
    <flight flight="LX179" dep="SIN" arr="ZRH" aircraftRegistration="HBJMN"
    paxWeight="10000" />    
    <flight flight="LX178" dep="SIN" arr="YUL" aircraftRegistration="ABCDE"
    paxWeight="10000" />  
</input>
它有一个名为的元素集合,因此应该对字段进行注释

@XmlElement(name = "flight")
public List<Flight> lista;

如果删除哪个标签?问题是什么还不清楚。请澄清。对不起,我的意思是,如果我删除了输入标记,为什么不重构并拥有一个包含航班或更多航班的POJO?你的意思是创建包含航班的输入类吗?创建一个输入类和一个航班类。让输入类包含一个Flight类型的变量。啊@Sotirios抱歉,但我的最后一个XML文件又被我复制到了问题的末尾,我试图按照你之前展示的逻辑进行操作,但这里我需要一个masterdata类,它将是根元素。这个类有一个airlines,aircraftTypes,飞机类和注释为Xmlelement的类,对于这些类,每个类都有List、List等,这些类也注释为Xmlelement?最后,我得到了基本的airline、aircraft和aircraftType类,它们的属性是?@gua,显示的XML无效。您只能有一个根元素。是否确定?所以没有机会在这个结构中解析它?@gua您需要有效的XML。
public class Input {
    public List<Flight> lista;
}
public class Flight {}
@XmlRootElement(name = "input")
public class Input {
@XmlElement(name = "flight")
public List<Flight> lista;