簡體   English   中英

如何使用Java的SAX Parser從URL數組一次解析多個XML feed?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM