невозможно проанализировать данные, поскольку я получаю исключение expatParser - PullRequest
0 голосов
/ 05 апреля 2011

парни. Ниже приведен xml, который я пытаюсь проанализировать

<?xml version="1.0" encoding="UTF-8"?><Categories><category name="Banquet & Marriage Hall" id="1" image=""/><category name="Crematorium, Burial Ground" id="2" image=""/><category name="Educational Institution" id="3" image=""/><category name="Embassies & Consulates" id="4" image=""/><category name="Fire Station" id="5" image=""/><category name="Government Office" id="6" image=""/></Categories>

Ниже приведен код моего парсера, который я использую

public byte parse(){

                SAXParserFactory spf = null;
                SAXParser sp = null;
                InputStream inputStream = null;

                try {
                    inputStream = new ByteArrayInputStream(data.getBytes());
                    spf = SAXParserFactory.newInstance();
                    if (spf != null) {
                        sp = spf.newSAXParser();
                        **sp.parse(inputStream, this);**


                    }
                }
                /*
                 * Exceptions need to be handled MalformedURLException
                 * ParserConfigurationException IOException SAXException
                 */

                catch (Exception e) {
                    System.out.println("Exception: " + e);
                    e.printStackTrace();
                } finally {
                    try {
                        if (inputStream != null)
                            inputStream.close();
                    } catch (Exception e) {
                    }
                }

                if (categorieslist != null && categorieslist.size() > 0) {
                //  Log.d("Array List Size",""+tipsList.get(4).getTitle());


                    return 1;
                } else {
                    return 0;
                }

            }

         public ArrayList<Categories> getParserCategoriesList(){
             return categorieslist;
         }

         public void startElement(String uri, String localName, String qName,
                    Attributes attributes) throws SAXException {

             if(localName.equalsIgnoreCase("Categories")){
                if(localName.equalsIgnoreCase("category")){
                    categories = new Categories();
                    categorieslist.add(categories);

                    categories.setId(attributes.getValue("id"));
                    Log.d("ID",attributes.getValue("id"));
                    categories.setName(attributes.getValue("name"));
                    Log.d("NAME",attributes.getValue("name"));
                    /*categories.setImage(attributes.getValue("image"));
                    Log.d("image",attributes.getValue("image"));*/
                }
             }

sp.parse () - этокод, который дает мне исключение expatParser Я использовал ту же логику в предыдущих 5 xml разборе, и я не получаю эту ошибку.Что я делаю не так или это XML не так ??

Ответы [ 2 ]

0 голосов
/ 11 декабря 2013

да, предыдущий комментарий верен, синтаксический анализатор выдает исключение при достижении & или любого специального символа, есть две опции.

  1. вам необходимо заменить специальный символ (используйте закодированное значение)
  2. вам нужно связать узел с CDATA, который содержит специальный символ ..

всего наилучшего

0 голосов
/ 05 апреля 2011

Я думаю, что парсер выдает исключение, когда достигает амперсанда (&). Вы можете найти проблему, похожую на вашу здесь

...