我有以下xml文件来存储我的事件:
<event
day="23"
month="4"
year="2015"
mod="mod1" >
event 1
</event>
<event
day="23"
month="4"
year="2015"
mod="mod1" >
event 2
</event>
<event
day="24"
month="6"
year="2015"
mod="mod2" >
event 3
</event>
<event
day="24"
month="7"
year="2015"
mod="mod3" >
event 4
</event>
并使用此methed加载事件:
private List<Event> events;
public void loadEvents(InputStream xmlStream) {
events = new ArrayList<Event>();
DocumentBuilder builder;
try {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(xmlStream);
NodeList eventsNodes = document.getElementsByTagName("event");
for (Node node : new IterableNodeList(eventsNodes)) {
NamedNodeMap attrs = node.getAttributes();
int year = Integer.parseInt(attrs.getNamedItem("year")
.getNodeValue());
int month = Integer.parseInt(attrs.getNamedItem("month")
.getNodeValue());
int day = Integer.parseInt(attrs.getNamedItem("day")
.getNodeValue());
String mod = attrs.getNamedItem("mod").getNodeValue();
String eventTitle = node.getFirstChild().getNodeValue();
if(mod.equals("mod1")){
events.add(new Event(new CivilDate(year, month, day),
eventTitle + "mod1"));
}
if(mod.equals("mod2")){
events.add(new Event(new CivilDate(year, month, day),
eventTitle + "mod2"));
}
if(mod.equals("mod3")){
events.add(new Event(new CivilDate(year, month, day),
eventTitle + "mod3"));
}
}
} catch (ParserConfigurationException e) {
Log.e("ERR", e.getMessage());
} catch (SAXException e) {
Log.e("ERR", e.getMessage());
} catch (IOException e) {
Log.e("ERR", e.getMessage());
}
}
这是为了获取事件:
public String getEventTitle(CivilDate date) {
for (Event event : events) {
if (event.getDate().equals(date)) {
// trim XML whitespaces and newlines
return event.getTitle().replaceAll("\n", "").trim();
}
}
return null;
}
但我有问题...在我的xml文件中我有2个相似的日期和不同的事件,如果我尝试在同一日期获取事件仅返回&#34;事件1&#34;。
答案 0 :(得分:2)
如果日期匹配则返回,因此只返回第一个。
public ArrayList<String> getEventTitle(CivilDate date) {
ArrayList<String> events = new ArrayList<String>();
for (Event event : events) {
if (event.getDate().equals(date)) {
// trim XML whitespaces and newlines
events.add(event.getTitle().replaceAll("\n", "").trim());
}
}
return events ;
}