【问题标题】:best approach to map HTML XML to POJO将 HTML XML 映射到 POJO 的最佳方法
【发布时间】:2019-01-09 19:13:09
【问题描述】:

我正在尝试为 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;
}

}

【问题讨论】:

  • 为表示的 pojo 的每个元素都有一个类是非常标准的。在这种情况下,您需要创建一个 jaxb 解组器。这是一个很好的例子:dzone.com/articles/introduction-to-jaxb-20
  • 谢谢,我会试试这个让你知道。赞赏!
  • 扎克,谢谢,想知道你能不能告诉我,我这样做对吗?包括头类。

标签: java xml jaxb unmarshalling


【解决方案1】:

不完全是,您的模型对于表示的结构来说太平了。

<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
}

【讨论】:

  • 你让我免于痛苦和痛苦,谢谢 Zack
猜你喜欢
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 2019-07-15
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
相关资源
最近更新 更多