2011-11-15 102 views
1

我在解析SAX時遇到了一個問題,我試圖解析& char,所有其他特殊字符都在SAX解析器中自動解析,但我面臨&字符的問題..任何人請給我一些建議?SAX解析'&'字符

首先我救了我的XML從符進入一個字符串,並通過邊檢查它的一側

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

//而下面的方法,我用解析我保存XML。 公共無效XmlParsing(字符串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

什麼問題? '&'錯過了?你得到一個異常拋出? – Kerry

+0

不,問題就像字符串是:「hello&world」,然後解析後只顯示:你好 – Kanika

+0

anyyyone plssssss – Kanika

回答

2

總是有使用SAX解析器(&)分析在特殊符號的問題,我覺得這只是事情可以幫助你,Handling Special Characters

編輯:

當您處理大塊包含許多特殊字符的XML或HTML時,可以使用CDATA section。 CDATA部分的工作方式與HTML中的<code>...</code>類似,但更爲如此:CDATA部分中的所有空白都很重要,並且其中的字符不會被解釋爲XML。 CDATA部分以。開頭。

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 
} 

這一定會奏效。

+0

這工作對我來說 –

+0

感謝它幫助我 – Tony