2011-03-17 58 views
0

我正在使用SAXParser解析从服务器接收到的xml数据。 (WARN/ExpatReader(718):不支持DTD处理程序)。我的语法分析停止在()函数中。在middle.I都提到了一些答案建议按照以下代码 我的代码WARN/ExpatReader(222):不支持DTD处理程序

public abstract class XmlParser extends DefaultHandler { 

public XmlParser(final String xmlData) { 
    parseDocument(xmlData); 
} 

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

@Override 
public abstract void endElement(String uri, String localName, String qName) 
    throws SAXException; 

private void parseDocument(final String xmlData) { 
    SAXParserFactory spf = SAXParserFactory.newInstance(); 

    try { 
     SAXParser sp = spf.newSAXParser(); 
     InputStream is = new ByteArrayInputStream(xmlData.getBytes("UTF-8"));<----I think i have to change here 
     sp.parse(is, this); 
    } catch (SAXException ex) { 
     ex.printStackTrace(); 
    } catch (ParserConfigurationException ex) { 
     ex.printStackTrace(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
} 

@Override 
public abstract void startElement(String uri, String localName, 
    String qName, Attributes attributes) throws SAXException; 

}

简称答案

的XMLReader的XMLReader = SAXParserFactory.newInstance()。newSAXParser()。getXMLReader( ); xmlReader.setContentHandler(// YourHandler extends DefaultHandler); xmlReader.parse(new InputSource(// BufferedReader));

对我来说问题 我有一个扩展了defaulthandler的抽象类。 我不能创建一个对象来传递setContentHandler()方法。 我应该记住这XmlParser的是抽象的,因为我已经覆盖每个模块解析器 所以建议我一个解决方案来解决这个问题

+0

请帮助我......如果有人为此提供解决方案 – user637503 2011-03-17 08:31:23

回答

0

这是一个known bug。据报道在FroYo(2.2)中是固定的。