2011-01-30 67 views
4

我在Android/JAVA做一些简单的SAXParsing用的SAXParser等的SAXParser无法解析某些字符

它可以正确解析文件,但打嗝的时候遇到一些特殊的字符,例如,如果它下面解析这个XML:

<?xml version="1.0" encoding="ISO-8859-1" ?><MTRXML version="1.0"> 
<GEOCODE key="pohj"> 
<LOC name1="Pohjantori" number="" city="Espoo" code="995" address="" type="1" category="poi" x="2544225" y="6674893" lon="24.79378" lat="60.18324" /> 
<LOC name1="Pohjois-Haaga" number="" city="Helsinki" code="41" address="" type="1" category="poi" x="2549164" y="6680186" lon="24.88405" lat="60.23018" /> 
<LOC name1="Pohjois-Leppävaara" number="" city="Espoo" code="50" address="" type="1" category="poi" x="2545057" y="6679240" lon="24.80974" lat="60.22216" /> 

当它遇到的Pohjois-Leppävaara在上线就会打嗝。

它给人的错误是:

01-30 18:14:52.039: WARN/System.err(686): org.apache.harmony.xml.ExpatParser$ParseException: At line 5, column 24: not well-formed (invalid token) 

我肯定的SAXParser可以处理这些字符,但我相信我需要设置一些编码等地方?

Java代码是这样:

AXParserFactory factory = SAXParserFactory.newInstance(); 

    SAXParser parser = null; 
    try { 
     parser = factory.newSAXParser(); 
    } catch (ParserConfigurationException e) { 
     e.printStackTrace(); 
     return null; 
    } catch (SAXException e) { 
     e.printStackTrace(); 
     return null; 
    } 

    XmlHandler handler = new XmlHandler(); 
    try { 
     parser.parse(urls[0], handler); 
    } catch (SAXException e) { 
     e.printStackTrace(); 
     return null; 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } 

回答

4

我希望这是在文件的编码错误。使用十六进制编辑器来验证Leppävaara是字节序列4c 65 70 70 e4 76 61 61 72 61。如果ä不是E4,则使用ISO-8859-1以外的编码保存文档。

相关问题