将HTML XML映射到POJO的最佳方法

时间:2019-01-09 19:13:10

标签: java xml jaxb unmarshalling

我正在尝试为html xml文件设置映射方案,我真的在寻求建议。我是解组xml内容的新手。在我看来,每个部分似乎都需要一堂课。我希望有更好的方法。我的文件看起来像这样。我才刚刚开始尝试了解如何解决此问题,而我的头在旋转:)。我正在查看HEAD的类,HEADRTR的类,FDE的类和MM部分的类。但是如果列表列表很多,这似乎会变得笨拙且麻烦。机械生成状态消息的真实示例。 ???谢谢您的建议。所需的部分是HEAD部分的内容,HEADRTR部分的内容以及FDE和MM部分的内容。

A   008812111835040016XXXXXXXXXX
<RTR>
<HEAD>
<IDCMS pn="ABF31A6FNCL0004" vers="4.0"/>
<DA>2018/12/11 00:15:42</DA>
<ACD MSN="0160" tail="N504DN" type="A350-900"/>
<TID>C00000023</TID>
</HEAD>
<HEADRTR>
<FROM>ZSPD</FROM>
<TO>KLAX</TO>
<FNBR>DAL88     </FNBR>
</HEADRTR>
<ITD>
<CB>A</CB>
<FDE disp="n" dm="y">
<MC>3031H050</MC>
<MD>A-ICE // &gt; A-ICE SIDESLIP PROBE 2 HEATG</MD>
<DA>2018/12/11 00:12:42</DA>
<CDA>2018/12/11 00:14:17</CDA>
<FPH>8</FPH>
<LAB>1</LAB>
</FDE>
<MM fo="A" occ="5">
<MC>3413F7EV</MC>
<MD>PROBE-SSA,2(11FP2)</MD>
<DA>2018/12/11 00:08:43</DA>
<ATA>3413</ATA>
<FPH>8</FPH>
<FCL>1</FCL>
<PRIO>high</PRIO>
<STA>1</STA>
<SYS name="ADR2" bite_id="3" side="2"/>
</MM>
</ITD>
</RTR>

从头开始,这是普通班,想知道您是否可以告诉我我是否走了正确的道路。这是做属性和元素的正确方法吗?

@XmlRootElement( name = "HEAD" )
@XmlAccessorType(XmlAccessType.FIELD)
public class Head {

String pn;
String vers;
String da;
String msn;
String tail;
String type;
String tid;

public String getPn() {
    return pn;
}
public String getVers() {
    return vers;
}
public String getDa() {
    return da;
}
public String getMsn() {
    return msn;
}
public String getTail() {
    return tail;
}
public String getType() {
    return type;
}
public String getTid() {
    return tid;
}

@XmlAttribute(name="pn")
public void setPn(String pn) {
    this.pn = pn;
}
@XmlAttribute(name="vers")
public void setVers(String vers) {
    this.vers = vers;
}
@@XmlElement(name="da")
public void setDa(String da) {
    this.da = da;
}
@XmlAttribute(name="msn")
public void setMsn(String msn) {
    this.pn = pn;
}
@XmlAttribute(name="tail")
public void setTail(String tail) {
    this.tail = tail;
}
@XmlAttribute(name="type")
public void setPn(String type) {
    this.type = type;
}
@XmlElement(name="tid")
public void setDa(String tid) {
    this.tid = tid;
}

}

1 个答案:

答案 0 :(得分:2)

不太完全,您的模型对于所表示的结构而言太平坦了。

<HEAD>
    <IDCMS pn="ABF31A6FNCL0004" vers="4.0"/>
    <DA>2018/12/11 00:15:42</DA>
    <ACD MSN="0160" tail="N504DN" type="A350-900"/>
    <TID>C00000023</TID>
</HEAD>

每个子元素都需要定义自己的子元素和/或属性:

@XmlRootElement(name = "HEAD")
public class Head { 
    @XmlElement(name = "IDCMS") private Idcms idcms;
    @XmlElement(name = "DA") private String da;
    @XmlElement(name = "ACD") private Acd acd;
    @XmlElement(name = "TID") private String tid;
    ... getters/setters
}

public class Idcms { 
    @XmlAttribute(name = "pn") private String pn;
    @XmlAttribute(name = "vers") private String vers;
    ... getters/setters
}

public class Acd {
    @XmlAttribute(name = "MSN") private String msn;
    @XmlAttribute(name = "tail") private String tail;
    @XmlAttribute(name = "type") private String type;
    ... getters/setters
}