当我尝试解析&时,我在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);
}
}
答案 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
}
这肯定有用。