Разбор SAX символа '&'

Я столкнулся с проблемой в синтаксическом анализе SAX, когда я пытаюсь разобрать и char. Все остальные специальные символы анализируются автоматически в синтаксическом анализаторе SAX, но я столкнулся с проблемой в & характере .. кто-нибудь, пожалуйста, предложите мне что-нибудь ??

Во-первых, я сохраняю свой XML, поступающий от веб-сервисов, в строку и проверяю его рядом, как

     if(ques_xml.contains("&"))
     {
                ques_xml=ques_xml.replaceAll("&", "&");
    }

// И следующий метод, который я использую для анализа сохраненного XML. public void XmlParsing (строка вопросов_xml) { попробуйте {

        /** Handling XML */
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();

        /** Create handler to handle XML Tags ( extends DefaultHandler ) */
        MyXmlHandler myXMLHandler = new MyXmlHandler();
        xr.setContentHandler(myXMLHandler);
        xr.parse( new InputSource(new StringReader(questions_xml)));


        } catch (Exception e) {
            String err = (e.getMessage()==null)?"XMLParsing exception":e.getMessage();
            Log.e("XMLParsing Exception",err); 
        }


}

person Kanika    schedule 15.11.2011    source источник
comment
В чем проблема? '&' пропущен? Вы получаете исключение?   -  person D-Dᴙum    schedule 15.11.2011
comment
нет, проблема в том, что строка: привет и мир, а затем после синтаксического анализа отображается только: привет   -  person Kanika    schedule 15.11.2011
comment
Если возможно, используйте другой парсер, почему вы собираетесь использовать парсер SAX.   -  person user370305    schedule 15.11.2011
comment
Я думаю, что синтаксический анализатор SAX автоматически заменяет все специальные символы их соответствующими кодами, но не знаю, почему он не заменяет &   -  person Kanika    schedule 15.11.2011
comment
Вы решили эту проблему??? я также сталкиваюсь с той же проблемой. я стараюсь все дать ответ, но не решить его.   -  person Mitesh Jain    schedule 12.06.2012


Ответы (2)


Всегда возникают проблемы с анализом специальных символов (&) с помощью анализатора SAX, я думаю, что это единственное, что может вам помочь, Обработка специальных символов

ИЗМЕНИТЬ:

При обработке больших блоков XML или HTML, содержащих много специальных символов, можно использовать расширение CDATA section. Раздел CDATA работает как <code>...</code> в HTML, только в большей степени: все пробелы в разделе CDATA значимы, а символы в нем не интерпретируются как XML. Раздел CDATA начинается с .

person user370305    schedule 15.11.2011

В этом случае вы можете использовать StringBuffer.

Инициализируйте StringBuffer в startElement.

   public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        //reset
         buffer = new StringBuffer();
....
}

Затем в символы просто добавьте содержимое в StringBuffer.

public void characters(char[] ch, int start, int length) throws SAXException {
        buffer.append(new String(ch,start,length));
    }

И затем, наконец, используйте этот StringBuffer в endElement.

public void endElement(String uri, String localName, String qName) throws SAXException {
       // use StringBuffer's object buffer here
}

Это обязательно сработает.

person Lalit Poptani    schedule 15.11.2011