2011-11-15 5 views
1

&文字を解析しようとしたときにSAX解析の問題に直面しています。他のすべての特殊文字はSAXパーサで自動的に解析されますが、&文字に問題があります。 plsは私に何かを提案しますか?'&'文字のSAX解析

まず私は、文字列にWebサービスから来て

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

//そして、私は私の保存されたXMLを解析するために使用しています以下の方法として、それを並べてチェック私の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"のような問題は、解析後にのみ表示されます:hello – 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)); 
    } 

最後に、このStringBufferをendElementで使用します。

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

これは確実に機能します。

+0

これは私のために働いた –

+0

ありがとうそれは私を助けた – Tony