[英]How to parse multiple XML feeds at once from an array of URLs with SAX Parser for Java?
我正在使用一个Android应用程序,该应用程序根据用户首选项分析一个或多个XML提要。 通过为解析器提供XML提要的URL数组,是否可以一次解析(使用SAX解析器)多个XML提要?
如果不是,那么将来自不同XML提要的已解析项目列出在一个列表中的另一种方法是什么? 一种直观的方法是使用java.io.SequenceInputStream
合并两个输入流。 但是,这将引发NullPointerException:
try {
URL urlOne = new URL("http://example.com/feedone.xml");
URL urlTwo = new URL("http://example.com/feedtwo.xml");
InputStream streamOne = urlOne.openStream();
InputStream streamTwo = urlTwo.openStream();
InputStream streamBoth = new SequenceInputStream(streamOne, streamTwo);
InputSource sourceBoth = new InputSource(streamBoth);
//Parsing
stream = xmlHandler.getStream();
}
catch (Exception error) {
error.printStackTrace();
}
List<Item> content = stream.getList();
return content;
在解析之前附加流的策略不太可能很好地工作,因为附加的XML将不是有效的XML。 由于每个XML输入都有其自己的根元素,因此附加的XML将具有多个根,这在XML中是不允许的。 另外,它可能具有多个XML标头,例如
<?xml version="1.0" encoding="UTF-8"?>
这也是无效的。
尽管可以对输入进行预处理以解决这些问题,但最好还是分别解析它们,然后再处理合并结果。
可以使SAX解析器将已解析的元素添加到现有的元素列表中。 如果您在问题中张贴代码以显示如何解析单个文件,我们也许可以帮助您确定如何根据您的多个输入需求进行调整。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.