SAX解析器,并从联播网,
问题描述:
你好伙伴开发...只是为了确保,我要问这个问题一个文件:SAX解析器,并从联播网,
如何XML SAX解析器访问.xml文件被解析?它是否从给定的URL下载整个文件?
有没有破解解析的任何用法,以便我们可以保存一些千字节的数据?
想象一个带有订购商品的大型.xml文件。我们只需要从顶部的几个项目,其他项目可能已经被处理和存储。当我在特定点停止解析时,我会保存一些数据(当然,我会节省一些时间)。
感谢您的回答。
答
SAX解析器实现以多种语言存在,答案可能是特定于实现的。但至少常见的Java实现可以从流中读取xml,而不需要下载整个东西。
一个Java SAX解析器的调用从URL
解析通常类似于
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
MyHandler handler = new MyHandler();
xr.setContentHandler(handler);
xr.parse(new InputSource(sourceUrl.openStream()));
在处理MyHandler
是你定义实现org.xml.sax.ContentHandler
类(最容易通过扩展org.xml.sax.helpers.DefaultHandler
)和sourceURL
是java.net.URL
为URL。
当然,这一切都被封闭在一个try-catch ...
你的处理程序可以抛出一个异常信号,它已经达到了你想要什么解析结束,并通过捕获该异常,您的程序可以干净地完成而不需要读取整个流。
谢谢,我在想Java的实现......只是想确定一下,你有没有任何文件或比较支持它? – Hawk 2012-02-07 12:30:44
我有支持关于标准Java实现的声明的代码。在最新的编辑中看到片段。 – 2012-02-07 13:03:02
我明白了......非常感谢你:) – Hawk 2012-02-07 14:10:51