我需要从我的整个.xml文件中获得准确答案。 假设我们有.xml的一部分:
<trace>
<string key="concept:name" value="1"/>
<string key="description" value="Simulated process instance"/>
<event>
<string key="org:resource" value="System"/>
<date key="time:timestamp" value="1970-01-02T12:23:00.000+01:00"/>
<string key="concept:name" value="Register"/>
<string key="lifecycle:transition" value="complete"/>
</event>
<event>
<string key="org:resource" value="Tester3"/>
<date key="time:timestamp" value="1970-01-02T12:23:00.000+01:00"/>
<string key="concept:name" value="Analyze Defect"/>
<string key="lifecycle:transition" value="start"/>
</event>
<event>
<string key="defectType" value="6"/>
<string key="org:resource" value="Tester3"/>
<string key="lifecycle:transition" value="complete"/>
<string key="phoneType" value="T2"/>
<date key="time:timestamp" value="1970-01-02T12:30:00.000+01:00"/>
<string key="concept:name" value="Analyze Defect"/>
</event>
<event>
<string key="org:resource" value="SolverC1"/>
<date key="time:timestamp" value="1970-01-02T12:31:00.000+01:00"/>
<string key="concept:name" value="Repair (Complex)"/>
<string key="lifecycle:transition" value="start"/>
</event>
<event>
<string key="org:resource" value="SolverC1"/>
<date key="time:timestamp" value="1970-01-02T12:49:00.000+01:00"/>
<string key="concept:name" value="Repair (Complex)"/>
<string key="lifecycle:transition" value="complete"/>
</event>
<event>
<string key="org:resource" value="Tester3"/>
<date key="time:timestamp" value="1970-01-02T12:49:00.000+01:00"/>
<string key="concept:name" value="Test Repair"/>
<string key="lifecycle:transition" value="start"/>
</event>
<event>
<string key="numberRepairs" value="0"/>
<string key="org:resource" value="Tester3"/>
<string key="lifecycle:transition" value="complete"/>
<date key="time:timestamp" value="1970-01-02T12:55:00.000+01:00"/>
<string key="concept:name" value="Test Repair"/>
<string key="defectFixed" value="true"/>
</event>
<event>
<string key=" " value="System"/>
<date key="time:timestamp" value="1970-01-02T13:10:00.000+01:00"/>
<string key="concept:name" value="Inform User"/>
<string key="lifecycle:transition" value="complete"/>
</event>
<event>
<string key="numberRepairs" value="0"/>
<string key="org:resource" value="System"/>
<string key="lifecycle:transition" value="complete"/>
<date key="time:timestamp" value="1970-01-02T13:10:00.000+01:00"/>
<string key="concept:name" value="Archive Repair"/>
<string key="defectFixed" value="true"/>
</event>
</trace>
从这里我需要找到两个确切的“事件”。事件名称以trace形式写入 - &gt;事件 - &gt; string key =“concept:name”value =“ EVENT NAME ”
其中一个事件应该生命周期:转换值=“开始”,第二个 - “完成”。
从“完整”事件中我需要时间:时间戳值=“时间”并减去“开始”事件时间:时间戳值=“时间”。< / p>
因此,您看到公式为time = time_complete - time_start
问题是时间(时间 - 日期)格式没有用,例如, 1970-01-02T12:30:00.000+01:00
我只需要获取12:30:00
并使其缩减,以便找到确切的时间过程。
我的想法是在跟踪,所有生命周期转换值以及此跟踪中的所有“时间”中获取所有事件名称,但我发现它太难了,我可以找到正确的方法来执行此操作。以下是我所做的一些代码:
NodeList nodeList = document.getElementsByTagName("trace");
Element element = (Element) nodeList.item(0);
NodeList stringList = element.getElementsByTagName("string");
NodeList dateList = element.getElementsByTagName("date");
//--- Get all events names ---//
for (int x = 1, size = stringList.getLength(); x < size; x++) {
if (stringList.item(x).getAttributes().getNamedItem("key").getNodeValue().contains("concept:name")) {
eventName.add(stringList.item(x).getAttributes().getNamedItem("value").getNodeValue());
}
}
//--- Get all times of every event in trace ---//
for (int y = 0, size = dateList.getLength(); y < size; y++) {
if (dateList.item(y).getAttributes().getNamedItem("key").getNodeValue().contains("time:timestamp")) {
time.add(dateList.item(y).getAttributes().getNamedItem("value").getNodeValue());
}
}
//--- Get all lifecycle transitions of events ---//
for (int x = 0, size = stringList.getLength(); x < size; x++) {
if (stringList.item(x).getAttributes().getNamedItem("key").getNodeValue().contains("lifecycle:transition")) {
status.add(stringList.item(x).getAttributes().getNamedItem("value").getNodeValue());
}
}
答案 0 :(得分:0)
我想,我用代码解决了我的问题:
SimpleDateFormat str = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'+'SS:SS");
Date data;
for (int i = 0; i < time.size(); i++) {
data = str.parse(time.get(i));
minutes.add(data.getHours() * 60 + data.getMinutes());
}
无论如何,谢谢你的帮助:)。