SAX解析'&'字符

时间:2011-11-15 09:46:55

标签: android xml-parsing

当我尝试解析&时,我在SAX解析中遇到问题char,所有其他特殊字符在SAX解析器中自动解析,但我面临的问题是&性格......任何人都建议我做点什么?

首先,我将来自webservices的XML保存到字符串中并将其并排检查为

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

//我使用以下方法来解析保存的XML。     public void XmlParsing(String questions_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); 
        }


}

2 个答案:

答案 0 :(得分:2)

使用SAX解析器进行特殊符号(&)解析时总会出现问题,我认为这只能帮助您,Handling Special Characters

修改

当您处理包含许多特殊字符的大块XML或HTML时,您可以使用CDATA section。 CDATA部分的工作方式与HTML中的<code>...</code>类似,只是更多:CDATA部分中的所有空格都很重要,而其中的字符不会被解释为XML。 CDATA部分以。

开头

答案 1 :(得分:2)

在这种情况下,您可以使用StringBuffer。

在startElement中初始化StringBuffer。

   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));
    }

然后最后在endElement中使用这个StringBuffer。

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

这肯定有用。