Adds support for offset and binary parameters
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / data / Pazpar2ResponseParser.java
index 7cf41df..f9f607b 100644 (file)
@@ -11,6 +11,7 @@ import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;\r
 import javax.xml.parsers.SAXParserFactory;\r
 \r
+import org.apache.log4j.Logger;\r
 import org.xml.sax.Attributes;\r
 import org.xml.sax.InputSource;\r
 import org.xml.sax.SAXException;\r
@@ -37,8 +38,9 @@ public class Pazpar2ResponseParser extends DefaultHandler {
   private Stack<Pazpar2ResponseData> dataElements = new Stack<Pazpar2ResponseData>();\r
   private Pazpar2ResponseData result = null;\r
   private String xml = null;\r
+  private static Logger logger = Logger.getLogger(Pazpar2ResponseParser.class);\r
 \r
-  private static final List<String> docTypes = \r
+  public static final List<String> docTypes = \r
       Arrays.asList("bytarget","termlist","show","stat","record","search");\r
   \r
   public Pazpar2ResponseParser() {    \r
@@ -134,9 +136,14 @@ public class Pazpar2ResponseParser extends DefaultHandler {
     currentElement.setType(localName);\r
     for (int i=0; i< atts.getLength(); i++) {\r
        currentElement.setAttribute(atts.getLocalName(i), atts.getValue(i));\r
-    }\r
+    }    \r
     if (!docTypes.contains(localName)) {\r
-      dataElements.peek().addElement(localName, currentElement);\r
+      if (dataElements.size() == 0) {\r
+        logger.info("Encountered unknown top level element [" + localName + "]");\r
+        currentElement.setType(localName);\r
+      } else {\r
+        dataElements.peek().addElement(localName, currentElement);\r
+      }\r
     }\r
     if (this.xml != null) { // Store XML for doc level elements\r
       currentElement.setXml(xml);\r