import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import com.Handler.MyHandler;
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = spf.newSAXParser();
MyHandler handler = new MyHandler(nodeName);
// 这里出错The method parse(InputStream, HandlerBase) in the type SAXParser is not applicable for the arguments (InputStream, MyHandler)
parser.parse(inputStream, handler);
请问这个错误该怎么解决?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
关注 Sax解析xml的话,SAXParser它的parse方法的声明为parse(InputSource is, DefaultHandler dh) 使用指定的 DefaultHandler 将给定 InputSource 的内容解析为 XML。通常我们需要自己实现DefaultHandler接口。你传入的MyHandler的话,这个类需要继承DefaultHandler类,然后按照自己的业务逻辑重写一些必要的方法。
Java使用SAX的一个例子代码,生成SAXParser、生成Handler实例、解析文件、为过滤器设置解析器、打印该元素节点所有属性等。import org.xml.sax.*; import org.xml.sax.helpers.*; import org.apache.xerces.parsers.*; public class SAXDemo extends DefaultHandler { public static void main(String[] args) { try { //生成SAXParser SAXParser parser=(SAXParser)Class. forName("org.apache.xerces.parsers.SAXParser"). newInstance(); SAXDemo handler=new SAXDemo(); //生成Handler实例 FilterHandler filter=new FilterHandler(); parser.setContentHandler(handler); System.out.println("\nNow the parser is working...\n"); //解析文件 parser.parse("TestXerces.xml"); System.out.println("\nNow the filter is working ...\n"); //为过滤器设置解析器 filter.setParent(parser); //为过滤器设置处理器 filter.setContentHandler(handler); //解析文件 filter.parse("TestXerces.xml"); } catch(Exception e) { System.out.println(e.toString()); } } public void startElement (String uri,String localName,String qName,Attributes attr) { System.out.println("start of a Element --> uri: "+ uri+" localName: "+localName+" qName: "+qName); //打印该元素节点所有属性 if(attr.getLength()>0) { for(int i=0;i<attr.getLength();i++) { System.out.println("\t...with attribute --> "+ attr.getQName(i)+"="+attr.getValue(i)); } } } public void endElement (String uri,String localName,String qName) { System.out.println("end of a Element --> uri: "+uri+ " localName: "+localName+" qName: "+qName); } static class FilterHandler extends XMLFilterImpl { int index=0; public void startElement (String uri,String localName,String qName,Attributes attr) throws SAXException { AttributesImpl attrImpl=new AttributesImpl(attr); for (int i=0;i<attrImpl.getLength();i++) { //检查是否有ID属性 if(attrImpl.getQName(i).toUpperCase().equals("ID")) { attrImpl.removeAttribute(i); break; } } //新建ID属性 attrImpl.addAttribute ("","id","id","ID",String.valueOf(index++)); super.startElement(uri,localName,qName,attrImpl); } public void endElement (String uri,String localName,String qName) throws SAXException { super.endElement(uri,localName,qName); } public void characters(char[] ch,int iStart,int iLength) throws SAXException { super.characters(ch,iStart,iLength); } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
- ¥30 求一段fortran代码用IVF编译运行的结果
- ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
- ¥15 lammps拉伸应力应变曲线分析
- ¥15 C++ 头文件/宏冲突问题解决
- ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
- ¥50 安卓adb backup备份子用户应用数据失败
- ¥20 有人能用聚类分析帮我分析一下文本内容嘛
- ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
- ¥30 python代码,帮调试,帮帮忙吧