我正在使用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保持为抽象,因为我必须覆盖每个模块解析器 所以建议我解决这个问题