在Java中,当我将XML解析为对象时,如何注释我的元素,该元素应该是我的类,而不是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 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;