From c53fdd16d37761c77005519b47efef1a61b2c98f Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Thu, 2 May 2013 22:35:38 +1200 Subject: Fix XML parsing (fix #45) --- src/org/traccar/web/Traccar.gwt.xml | 1 + src/org/traccar/web/client/model/StateReader.java | 14 ++++++-- src/org/traccar/web/shared/model/XmlParser.java | 40 ----------------------- 3 files changed, 12 insertions(+), 43 deletions(-) delete mode 100644 src/org/traccar/web/shared/model/XmlParser.java (limited to 'src') diff --git a/src/org/traccar/web/Traccar.gwt.xml b/src/org/traccar/web/Traccar.gwt.xml index 4ae8870..0f71766 100644 --- a/src/org/traccar/web/Traccar.gwt.xml +++ b/src/org/traccar/web/Traccar.gwt.xml @@ -7,6 +7,7 @@ + diff --git a/src/org/traccar/web/client/model/StateReader.java b/src/org/traccar/web/client/model/StateReader.java index 667f474..10ed980 100644 --- a/src/org/traccar/web/client/model/StateReader.java +++ b/src/org/traccar/web/client/model/StateReader.java @@ -5,7 +5,10 @@ import java.util.List; import org.traccar.web.client.ApplicationContext; import org.traccar.web.shared.model.Position; -import org.traccar.web.shared.model.XmlParser; + +import com.google.gwt.xml.client.Node; +import com.google.gwt.xml.client.NodeList; +import com.google.gwt.xml.client.XMLParser; public class StateReader { @@ -31,8 +34,13 @@ public class StateReader { String other = position.getOther(); if (other != null) { - for (String key : XmlParser.enumerateElements(other)) { - state.add(new StateItem(key, XmlParser.getElement(other, key))); + try { + NodeList nodes = XMLParser.parse(other).getFirstChild().getChildNodes(); + for (int i = 0; i < nodes.getLength(); i++) { + Node node = nodes.item(i); + state.add(new StateItem(node.getNodeName(), node.getFirstChild().getNodeValue())); + } + } catch (Exception error) { } } diff --git a/src/org/traccar/web/shared/model/XmlParser.java b/src/org/traccar/web/shared/model/XmlParser.java deleted file mode 100644 index f19c75a..0000000 --- a/src/org/traccar/web/shared/model/XmlParser.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.traccar.web.shared.model; - -import java.util.LinkedList; -import java.util.List; - -import com.google.gwt.regexp.shared.MatchResult; -import com.google.gwt.regexp.shared.RegExp; - -public class XmlParser { - - public static List enumerateElements(String input) { - List list = new LinkedList(); - - RegExp parser = RegExp.compile("<([^/<][^<]*)>", "g"); - MatchResult result = parser.exec(input); - while (result.getGroupCount() > 0) { - list.add(result.getGroup(1)); - result = parser.exec(input); - } - - return list; - } - - public static String getElement(String input, String key) { - - StringBuilder pattern = new StringBuilder(); - pattern.append("<").append(key).append(">"); - pattern.append("([^<]*)"); - pattern.append(""); - - RegExp parser = RegExp.compile(pattern.toString()); - MatchResult result = parser.exec(input); - if (result.getGroupCount() > 0) { - return result.getGroup(1); - } - - return null; - } - -} -- cgit v1.2.3