WARN / ExpatReader(222):不支持DTD处理程序

时间:2011-03-17 05:57:18

标签: android

我正在使用SAXParser来解析从服务器接收的xml数据。 我创建了抽象类XmlParser使用抽象方法characters(),startelement(),endelement()扩展DefaultHandler。我遇到过这个问题(WARN / ExpatReader(718):不支持DTD处理程序。)我的PArsing在中。我已经提到了一些建议的答案,遵循以下代码 我的代码

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扩展DefaultHandler); xmlReader.parse(new InputSource(// BufferedReader));

对我来说问题 我有一个扩展defaulthandler的抽象类。 我无法创建一个对象来传递setContentHandler()方法。 我应该将此XmlParser保持为抽象,因为我必须覆盖每个模块解析器 所以建议我解决这个问题

1 个答案:

答案 0 :(得分:0)

这是known bug。据报道,它已在FroYo(2.2)中修复。