2011-08-10 32 views
1

在我的android應用程序中,我讀取了xml文件並將這些數據存儲在SQLite數據庫中。 當我讀取由「&」組成的記錄時,它不會記錄整個文本。使用SAX的Android XML解析無法在「&」標記後面讀取

例如,當我讀取下面的標籤中的值時,它只讀取49°38。另一部分是損失。

<latitude> 49°38&#039;59&#039;&#039;N </latitude>

在以下情況下

它只能採取只得到「約翰·李維斯」部分和「&」後的字符是損失。

<name> John Levis & sons</name> 

有沒有人有想法讀取整個值?

這是我採取從延伸到所述的DefaultHandler XML處理程序類的值[此值取在的endElement methgod]

@Override 
public void characters(char[] ch, int start, int length)throws SAXException 
{ 
    super.characters(ch, start, length); 

    if(currentElement) 
    { 
     currentValue = new String(ch, start, length); 
     currentElement = false; 
    } 
} 
+3

查看http://stackoverflow.com/questions/1890404/sax-parsing-and-encoding/1891230#1891230 –

+0

非常感謝你馬修......它的工作原理.... !!!!! – JibW

回答

0

&應當被編碼爲&安培。爲xml的目的。你可以添加你的XML文件的頭文件,以便我們可以看到編碼?

+0

<?xml version =「1.0」encoding =「utf-8」?>,這是xml文件的標題 – JibW

+0

您是否在默認處理程序中使用了logcat來準確查看數據庫中的內容? –

+0

謝謝AlaskanProgrammer ...我找到了一種使用字符串緩衝區解析XML的方法。馬修給了馬... ...! – JibW

1

SAX中的characters()回調允許將文本節點拆分爲儘可能多的小塊。當你點擊文本的末尾時(通常是endElement事件,也許是混合內容中的startElement事件),你應該積累它們並處理它們。許多解析器在文本遇到實體引用時會分割文本,但它們可以在任何地方分割。