2017-10-22 97 views
0
<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

+0

您是否试过JAXB;只需编写一个类来映射XML并只访问像对象这样的属性; https://www.javatpoint.com/jaxb-tutorial – LogicDev

+0

通过您所提供的链接看,我认为这可能是比DOM更加有组织的方法。但是,我的问题依然存在。两个时间戳的名称相同,但在抵达和离开时组织方式不同。根据该文件,我不能找到一种方法来分辨出哪个是代码。到达时间戳将被发送到SQL数据库以及离开时间戳。如何在使用JAX或DOM进行解析时从另一个角度讲述? – captCC

回答

0

简单!

为了区分你必须把它们在你他们的名字不同的一个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),您根据需要发送值