diff --git a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java
index ad1e232d..d6e566ba 100644
--- a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java
+++ b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java
@@ -1459,6 +1459,10 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
XmlPullUtil.exit(pp, "itdDepartureList");
}
+ else
+ {
+ XmlPullUtil.next(pp);
+ }
return result;
}
@@ -1864,8 +1868,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
XmlPullUtil.enter(pp, "itdTripDateTime");
XmlPullUtil.enter(pp, "itdDateTime");
- if (!XmlPullUtil.test(pp, "itdDate"))
- throw new IllegalStateException("cannot find ");
+ XmlPullUtil.require(pp, "itdDate");
if (!pp.isEmptyElementTag())
{
XmlPullUtil.enter(pp, "itdDate");
@@ -1879,6 +1882,10 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
}
XmlPullUtil.exit(pp, "itdDate");
}
+ else
+ {
+ XmlPullUtil.next(pp);
+ }
XmlPullUtil.exit(pp, "itdDateTime");
final Calendar time = new GregorianCalendar(timeZone());
@@ -2030,18 +2037,25 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
XmlPullUtil.next(pp);
boolean lowFloorVehicle = false;
- if (XmlPullUtil.test(pp, "itdInfoTextList") && !pp.isEmptyElementTag())
+ if (XmlPullUtil.test(pp, "itdInfoTextList"))
{
- XmlPullUtil.enter(pp, "itdInfoTextList");
- while (XmlPullUtil.test(pp, "infoTextListElem"))
+ if (!pp.isEmptyElementTag())
{
- XmlPullUtil.enter(pp, "infoTextListElem");
- final String text = pp.getText();
- if ("Niederflurwagen soweit verfügbar".equals(text)) // KVV
- lowFloorVehicle = true;
- XmlPullUtil.exit(pp, "infoTextListElem");
+ XmlPullUtil.enter(pp, "itdInfoTextList");
+ while (XmlPullUtil.test(pp, "infoTextListElem"))
+ {
+ XmlPullUtil.enter(pp, "infoTextListElem");
+ final String text = pp.getText();
+ if ("Niederflurwagen soweit verfügbar".equals(text)) // KVV
+ lowFloorVehicle = true;
+ XmlPullUtil.exit(pp, "infoTextListElem");
+ }
+ XmlPullUtil.exit(pp, "itdInfoTextList");
+ }
+ else
+ {
+ XmlPullUtil.next(pp);
}
- XmlPullUtil.exit(pp, "itdInfoTextList");
}
if (XmlPullUtil.test(pp, "itdFootPathInfo"))
@@ -2155,47 +2169,58 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
XmlPullUtil.exit(pp, "itdPartialRouteList");
final List fares = new ArrayList(2);
- if (XmlPullUtil.test(pp, "itdFare") && !pp.isEmptyElementTag())
+ if (XmlPullUtil.test(pp, "itdFare"))
{
- XmlPullUtil.enter(pp, "itdFare");
- if (XmlPullUtil.test(pp, "itdSingleTicket"))
+ if (!pp.isEmptyElementTag())
{
- final String net = XmlPullUtil.attr(pp, "net");
- final Currency currency = parseCurrency(XmlPullUtil.attr(pp, "currency"));
- final String fareAdult = XmlPullUtil.attr(pp, "fareAdult");
- final String fareChild = XmlPullUtil.attr(pp, "fareChild");
- final String unitName = XmlPullUtil.attr(pp, "unitName");
- final String unitsAdult = XmlPullUtil.attr(pp, "unitsAdult");
- final String unitsChild = XmlPullUtil.attr(pp, "unitsChild");
- final String levelAdult = pp.getAttributeValue(null, "levelAdult");
- final boolean hasLevelAdult = levelAdult != null && levelAdult.length() > 0;
- final String levelChild = pp.getAttributeValue(null, "levelChild");
- final boolean hasLevelChild = levelChild != null && levelChild.length() > 0;
- if (fareAdult != null && fareAdult.length() > 0)
- fares.add(new Fare(net, Type.ADULT, currency, Float.parseFloat(fareAdult), hasLevelAdult ? null : unitName,
- hasLevelAdult ? levelAdult : unitsAdult));
- if (fareChild != null && fareChild.length() > 0)
- fares.add(new Fare(net, Type.CHILD, currency, Float.parseFloat(fareChild), hasLevelChild ? null : unitName,
- hasLevelChild ? levelChild : unitsChild));
-
- if (!pp.isEmptyElementTag())
+ XmlPullUtil.enter(pp, "itdFare");
+ if (XmlPullUtil.test(pp, "itdSingleTicket"))
{
- XmlPullUtil.enter(pp, "itdSingleTicket");
- if (XmlPullUtil.test(pp, "itdGenericTicketList"))
+ final String net = XmlPullUtil.attr(pp, "net");
+ final Currency currency = parseCurrency(XmlPullUtil.attr(pp, "currency"));
+ final String fareAdult = XmlPullUtil.attr(pp, "fareAdult");
+ final String fareChild = XmlPullUtil.attr(pp, "fareChild");
+ final String unitName = XmlPullUtil.attr(pp, "unitName");
+ final String unitsAdult = XmlPullUtil.attr(pp, "unitsAdult");
+ final String unitsChild = XmlPullUtil.attr(pp, "unitsChild");
+ final String levelAdult = pp.getAttributeValue(null, "levelAdult");
+ final boolean hasLevelAdult = levelAdult != null && levelAdult.length() > 0;
+ final String levelChild = pp.getAttributeValue(null, "levelChild");
+ final boolean hasLevelChild = levelChild != null && levelChild.length() > 0;
+ if (fareAdult != null && fareAdult.length() > 0)
+ fares.add(new Fare(net, Type.ADULT, currency, Float.parseFloat(fareAdult), hasLevelAdult ? null : unitName,
+ hasLevelAdult ? levelAdult : unitsAdult));
+ if (fareChild != null && fareChild.length() > 0)
+ fares.add(new Fare(net, Type.CHILD, currency, Float.parseFloat(fareChild), hasLevelChild ? null : unitName,
+ hasLevelChild ? levelChild : unitsChild));
+
+ if (!pp.isEmptyElementTag())
{
- XmlPullUtil.enter(pp, "itdGenericTicketList");
- while (XmlPullUtil.test(pp, "itdGenericTicketGroup"))
+ XmlPullUtil.enter(pp, "itdSingleTicket");
+ if (XmlPullUtil.test(pp, "itdGenericTicketList"))
{
- final Fare fare = processItdGenericTicketGroup(pp, net, currency);
- if (fare != null)
- fares.add(fare);
+ XmlPullUtil.enter(pp, "itdGenericTicketList");
+ while (XmlPullUtil.test(pp, "itdGenericTicketGroup"))
+ {
+ final Fare fare = processItdGenericTicketGroup(pp, net, currency);
+ if (fare != null)
+ fares.add(fare);
+ }
+ XmlPullUtil.exit(pp, "itdGenericTicketList");
}
- XmlPullUtil.exit(pp, "itdGenericTicketList");
+ XmlPullUtil.exit(pp, "itdSingleTicket");
+ }
+ else
+ {
+ XmlPullUtil.next(pp);
}
- XmlPullUtil.exit(pp, "itdSingleTicket");
}
+ XmlPullUtil.exit(pp, "itdFare");
+ }
+ else
+ {
+ XmlPullUtil.next(pp);
}
- XmlPullUtil.exit(pp, "itdFare");
}
connections.add(new Connection(id, firstDeparture, lastArrival, parts, fares.isEmpty() ? null : fares, null, numChanges));
XmlPullUtil.exit(pp, "itdRoute");
@@ -2270,6 +2295,10 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
value = value.trim();
XmlPullUtil.exit(pp, "value");
}
+ else
+ {
+ XmlPullUtil.next(pp);
+ }
if (key.equals("FOR_RIDER"))
{