加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

org.xml.sax.SAXException: No input specified

发布时间:2020-12-16 06:04:06 所属栏目:百科 来源:网络整理
导读:在复习SAX解析xml的时候,出现了这个异常提示信息“org.xml.sax.SAXException: No input specified” 一直在查找,一直没有发现是什么原因, 后来直接检查输入流,发现是输入流为空所造成的,只要确保输入流不为空就不会出现这个异常。 下面再复习一下Androi

在复习SAX解析xml的时候,出现了这个异常提示信息“org.xml.sax.SAXException: No input specified”

一直在查找,一直没有发现是什么原因,

后来直接检查输入流,发现是输入流为空所造成的,只要确保输入流不为空就不会出现这个异常。


下面再复习一下Android中SAX方式解析xml:

1、首先需要一个解析器handler,该handler继承自DefaultHandler,handler中实现几个必要方法:

<span style="font-size:18px;">public class MySAXHandler extends DefaultHandler{
	public void startDocument()throws SAXException{}
	public void endDocument()throws SAXException{}
	public void startElement(String uri,String localName,String qName,Attributes attr)throws SAXException{}
	public void endElement(String uri,String qName)throws SAXException{}
	public void characters(char[] ch,int start,int len)throws SAXException{}
}</span>

2、解析入口方法

<span style="font-size:18px;">private void myXMLParser(InputStream input){
	if(input==null){
		//为空的操作
		return ;
	}
	SAXParserFactory 

factory=SAXParserFactory.newInstance();
	SAXParser parser=factory.newSAXParser();
	InputSource is=new InputSource(input);
	MySAXHandler handler=new MySAXHandler();
	parser.parse(is,handler);
}</span>



注意:

1、如果是本地资源测试的话,使用ClassLoader获取输入时,请注意

<span style="font-size:18px;">	ClassLoader loader = this.getClassLoader();
	input = loader.getResourceAsStream("com/mk/music/xml/rss.xml");</span>
这里getResourceAsStream要使用绝对路径,要不然会找不到资源文件(这里表示放在包com.mk.music.xml下面的rss.xml)

2、如果是放在顶级,就是没有放在包的下面,则不需要包名,如

<span style="font-size:18px;">	ClassLoader loader = this.getClassLoader();
	input = loader.getResourceAsStream("rss.xml");</span>
3、如果是放在工程的assets目录下面的话,需要注意,
<span style="font-size:18px;">input = this.getAssets().open("rss.xml");</span>
这里不需要使用绝对路径,只要文件完整名称;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读