高手帮我看看我的SAX....怎么报了个:java.net.MalformedURLException: no protocol的错误啊?

yeyu710 2005-08-16 05:51:34
我用eclipse建了个项目:写了个用SAX处理XML的类,可是运行时报错:java.net.MalformedURLException: no protocol:product.xml,帮我看看是因为什么啊:

Product.java


package com.leeg.bean;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;

class SAXParserHandler extends DefaultHandler{
public void startDocument()throws SAXException{
System.out.println("起始文档");
}

public void endDocument()throws SAXException{
System.out.println("结束文档");
}

public void characters(char[]ch ,int start,int length)throws SAXException{
String charString =new String(ch,start,length);
System.out.println("字符:"+charString);
}

public void startElement(String namespaceURI ,String localName,String qName,
Attributes atts)throws SAXException{
System.out.println("起始元素:"+qName);
for(int i=0;i<atts.getLength();i++){
System.out.println("属性值:"+atts.getValue(i));
}
}

public void endElement(String namespaceURI ,String localName,String qName)throws SAXException{
System.out.println("结束元素:"+qName);
}

}

public class Product {

public static void main(String[] args) throws Exception {
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
parser.parse("product.xml",new SAXParserHandler());
}
}


我的product.xml文件:(在我的项目目录下面啊)

<?xml version="1.0" encoding="UTF-8"?>
<product name="Speakers">
<quantity>3</quantity>
<price>1500</price>
</product>

运行结果为:
结束文档
java.net.MalformedURLException: no protocol: product.xml
at java.net.URL.<init>(URL.java:579)
at java.net.URL.<init>(URL.java:476)
at java.net.URL.<init>(URL.java:425)
at gnu.xml.aelfred2.XmlParser.pushURL(XmlParser.java:3414)
at gnu.xml.aelfred2.XmlParser.doParse(XmlParser.java:159)
at gnu.xml.aelfred2.SAXDriver.parse(SAXDriver.java:320)
at gnu.xml.aelfred2.XmlReader.parse(XmlReader.java:294)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:223)
at com.leeg.bean.Product.main(Product.java:45)
Exception in thread "main"


唉,我是菜鸟啊,照着一本资料书来做的,可是不行啊,帮帮我啊
...全文
3184 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
humanity 2005-08-17
  • 打赏
  • 举报
回复
public class Product {

public static void main(String[] args) throws Exception {
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
parser.parse(Product.class.getResource("/product.xml"),new SAXParserHandler());
}
}
yeyu710 2005-08-17
  • 打赏
  • 举报
回复
呵呵,我太笨了,果然如同 jFresH_MaN(Contributing to Eclipse)说的那样
parser.parse(new File("product.xml"),new SAXParserHandler());
,就可以了。
至于最后 humanity(很健忘了) 说的方法不行,eclipse编译提示说:
The method parse(InputStream, HandlerBase) in the type SAXParser is not applicable for the arguments (URL, SAXParserHandler)。

呵呵,谢了啊!

jFresH_MaN 2005-08-16
  • 打赏
  • 举报
回复
parser.parse("product.xml",new SAXParserHandler());
------------
不好意思,刚才仔细看了你的代码,发现问题是在这里。
你可以查一下API,parse方法没有你样的参数表的。

你可以修改成这样:
parser.parse(new File("product.xml"),new SAXParserHandler());
yeyu710 2005-08-16
  • 打赏
  • 举报
回复
我是用eclipse编写的!
不过我还是照你说的做了,但还是不行啊
jFresH_MaN 2005-08-16
  • 打赏
  • 举报
回复
呵呵,你的xml文件是不是用UltralEdit编辑的?
这个是ue的bug,字符编码有问题。

你现在可以使用写字板打开这个xml保存一下。
再试试
zhkchi 2005-08-16
  • 打赏
  • 举报
回复
up
关注

67,543

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧