Unexpected token (<) using Document builder in Android Studio

Viewed 472

I'm using document builder and NodeList in Android Studio to parse an xml document. I previously found that the xml was incorrect and had un-escaped ampersands within the text. After taking care of this though and double check with w3 XML validator, I still get an unexpected token error:

e: "org.xml.sax.SAXParseException: Unexpected token (position:TEXT \n \n 601\n ...@5262:1 in java.io.StringReader@cd0db4a)"

However, when I open the xml and look at the line referred to, I don't see anything that would be considered troublesome:

...  ...
5257 <WebSvcLocation>
5258 <Id>1521981</Id>
5259 <Name>Warehouse: Row 3</Name>
5260 <SiteName>Warehouse</SiteName>
5261 </WebSvcLocation>
5262 </ArrayOfWebSvcLocation>

I have checked the xml as well for non printing characters and I have not found any. Below is the code I have been using:

public List<Location> SpinnerXML(String xml){
    List<Location> list = new ArrayList<Location>();
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder;
    InputSource is;
    String s = xml.replaceAll("[&]"," and ");

    try {
        builder = factory.newDocumentBuilder();
        is = new InputSource(new StringReader(s));
        Document doc = builder.parse(is);
        NodeList lt = doc.getElementsByTagName("WebSvcLocation");
        int id;
        String name,siteName;

        for (int i = 0; i < lt.getLength(); i++) {
            Element el = (Element) lt.item(i);
            id = Integer.parseInt(getValue(el, "Id"));
            name = getValue(el, "Name");
            siteName = getValue(el, "SiteName");

            list.add(new Location(id, name, siteName));
        }

    } catch (ParserConfigurationException e){
    } catch (SAXException e){
        e.printStackTrace();
    } catch (IOException e){
    }

    return list;
}

The XML I have been trying to read is hosted here.

Thanks in advance for the help!

1 Answers
Related