Вот пример XML-файла, из которого я пытаюсь получить данные:
<rss>
<channel>
<item>
<title>First Title</title>
<description>description text</description>
<component>Distribution - Maintain</component>
<timeoriginalestimate seconds="3600">1 hour</timeoriginalestimate>
<timespent seconds="1860">31 minutes</timespent>
</item>
<item>
<title>Second Title</title>
<description>description text</description>
<component>Reporting - Security</component>
<timeoriginalestimate seconds="3600">1 hour</timeoriginalestimate>
<timespent seconds="1860">31 minutes</timespent>
</item>
<item>
<title>third Title</title>
<description>description text</description>
<timeoriginalestimate seconds="5400">1 hour, 30 Minutes</timeoriginalestimate>
<timespent seconds="2700">45 minutes</timespent>
</item>
<item>
<title>Fourth Title</title>
<description>description text</description>
<component>Usability</component>
</item>
<item>
<title>Fifth Title</title>
<description>description text</description>
<component>Distribution - Maintain</component>
<timeoriginalestimate seconds="3600">1 hour</timeoriginalestimate>
<timespent seconds="7200">2 hours</timespent>
</item>
</channel>
</rss>
Я хочу собрать узлы timeoriginalestimate
и timespent
по значению component
. Я хочу сохранить значение component
либо на карте, либо в хэше в качестве ключа, а затем значение, равное общей разнице timeoriginalestimate
и timespent
K = "Распределение - Ведение" V = 2 часа-2 часа 31 минута
Некоторые из item
не будут иметь component
, а некоторые из component
не будут иметь значений времени. В этом случае я хотел бы, чтобы значения времени просто добавлялись к промежуточному итогу для «другого» компонента.
Я пишу это на языке Java, и я планирую распечатать отчет, который покажет, сколько времени было оценено по сравнению с тем, сколько времени фактически было потрачено каждым компонентом. Я не уверен, как это сделать.
Любая помощь будет высоко ценится. Спасибо!
Пример кода для подсчета вхождений значения:
private XPath featureXPath = XPath.newInstance("count(//rss/channel/item/type[text()='New Feature'])");
LinkedHashMap<String, Double> metrics = new LinkedHashMap<String, Double>();
metrics.put("New Features", (Double)featureXPath.selectSingleNode(doc));
Я просто не уверен, как добавить значения времени к неизвестному ключу и добавить только значения времени для этого соответствующего ключа