使用DOM解析Java中的复杂元素XML
问题描述:
<message>
<element1>
<arrival point="string">
<positionAndTime>
<Time>
<estimated time="2017-10-14T10:43:00Z"/>
</Time>
</positionAndTime>
</arrival>
</element1>
<element2>
<depart point="string">
<positionAndTime>
<Time>
<estimated time="2017-10-14T10:43:00Z"/>
</Time>
</positionAndTime>
</depart>
</element2>
</message>
这是我的XML文档的简化版本。 我在解析XML编写JavaEE应用中,但困惑。到目前为止,我已经能够遍历并接收来自到达点=字符串字符串和出发点=字符串,但我有了解如何从要素1获得“估算时间”块的问题,2。我可能只是简单的getElementsByTagName但由于它们被命名为中elements1相同,2,我需要让他们分开....使用DOM解析Java中的复杂元素XML
答
简单!
为了区分你必须把它们在你他们的名字不同的一个POJO类。
class MessageParser{
private String arrivalEstimatedTime;
private String departureEstimatedTime;
..
//getters and setters
public String getArrivalEstimatedTime() {
return arrivalEstimatedTime;
}
public void setArrivalEstimatedTime(String arrivalEstimatedTime) {
this.arrivalEstimatedTime = arrivalEstimatedTime;
}
public String getDepartureEstimatedTime() {
return departureEstimatedTime;
}
public void setDepartureEstimatedTime(String departureEstimatedTime) {
this.departureEstimatedTime = departureEstimatedTime;
}
}
当你遍历XML你知道你是(按到达标签或离开标签)
所以,当你在<arrival point="string">
标签中设置的值,如下
MessagePojo message=new MessagePojo();
message.SetArrivalEstimatedTime(arrival_Time_From_XML);
同预计出发时间。
现在您拥有数据(arrivalEstimatedTime,departureEstimatedTime),您根据需要发送值
您是否试过JAXB;只需编写一个类来映射XML并只访问像对象这样的属性; https://www.javatpoint.com/jaxb-tutorial – LogicDev
通过您所提供的链接看,我认为这可能是比DOM更加有组织的方法。但是,我的问题依然存在。两个时间戳的名称相同,但在抵达和离开时组织方式不同。根据该文件,我不能找到一种方法来分辨出哪个是代码。到达时间戳将被发送到SQL数据库以及离开时间戳。如何在使用JAX或DOM进行解析时从另一个角度讲述? – captCC