2013-05-13 220 views
0

目前,這裏是我想要做什麼:從url保存(xml)文件的更好方法是什麼?

  • 將XML文件保存到我的電腦從URL
  • 解析它,抓住我想要的信息(這是不是所有的)
  • 比較分析信息的XML

所以我可以做多種不同的事情的昨天版本,但我想這樣做的內存使用效率最高的方式成爲可能。我也不希望它永遠解析和比較文件。

選項1:

  • 直接從URL解析XML並將其保存到一個數組通過數組
  • 迭代並創建一個新的XML文件只解析信息我希望做這樣的事情this創建新的xml文件。
  • 比較兩個XML文件
  • 寫新的XML文件基於XML之間的差異

選項2:

  • 下載使用任何these建議的方法xml文件(將這個保持xml結構?)
  • 將xml解析爲數組
  • 比較兩個xml文件
  • 寫一個新的XML

這是兩個選項我一直在尋找到,但我知道有更多的。不知道它們是否更有效,但我沒有用電腦直接訪問互聯網幾天,所以我不能真正測試它們彼此。當我能夠測試一段時間後,我發現直接從網站解析信息需要一段時間。

的XML結構看起來是這樣的:

<Data> 
    <User> 
     <ID>1</ID> 
     <Name>Bob</Name> 
     <Age>18</Age> 
     <IsOnline>false</IsOnline> 
     <Sport>Basketball</Sport> 
     <GymPresence> 
      <LastSeen>April 12 2013</LastSeen> 
      <Picture>www.gym.com/picId=10000</Picture> 
      <Weights> 
       <Machine>Bench</Machine> 
       <Weight>175</Weight> 
       <Reps>8</Reps> 
      </Weights> 
     </GymPresence> 
    </User> 
    <User> 
     <ID>2</ID> 
     <Name>Joe</Name> 
     <Age>23</Age> 
     <IsOnline>false</IsOnline> 
     <Sport>Baseball</Sport> 
     <GymPresence> 
      <LastSeen>April 10 2013</LastSeen> 
      <Picture>www.gym.com/picId=10001</Picture> 
      <Weights> 
       <Machine>Bench</Machine> 
       <Weight>205</Weight> 
       <Reps>8</Reps> 
      </Weights> 
     </GymPresence> 
    </User> 
    ... 
    ... # 3 through 124 
    ... 
    <User> 
     <ID>125</ID> 
     <Name>Amy</Name> 
     <Age>17</Age> 
     <IsOnline>false</IsOnline> 
     <Sport>Volleyball</Sport> 
     <GymPresence> 
      <LastSeen>April 13 2013</LastSeen> 
      <Picture>www.gym.com/picId=10124</Picture> 
      <Weights> 
       <Machine>Bench</Machine> 
       <Weight>105</Weight> 
       <Reps>5</Reps> 
      </Weights> 
     </GymPresence> 
    </User> 
</Data> 

總體來說,我想知道,最好的選擇是什麼,分析,比較,並編寫XML文件。

當我能夠在線測試它時,需要一段時間解析xml而不保存它。當xml文件位於我的電腦上時,它變得相當快。但會下載文件保存XML格式?值得保留xml中不需要的信息,以備日後需要時使用嗎?或者我需要解析它並將其寫出來(這看起來會花費更長的時間)來保持格式?

+0

無論你下載什麼,它都歸結爲字節。如果你的網址流正在提供最終是正確的xml的字節,那麼這將是你最終會結束(如果你正在從流中讀取正確的)。 – 2013-05-13 18:51:14

回答

1

比較諸如XML或JSON或任何其他序列化格式之類的東西時,您比數據更關注二進制內容。我的意思是,

<Reps>8</Reps> 

相當於

<Reps  >8</Reps> 

我的建議是下載的XML文件,使用像JAXB庫來分析和轉換(關鍵字:unmarshal)文件的內容到Java對象(或列表/集合)。對你之前的文件版本做同樣的事情。然後比較java對象。使用集合,您可以計算兩者之間的差異,從而創建僅包含差異的新文件(關鍵字:marshal)。

+0

謝謝你的建議。它明確了我是否應該下載文件。如果我想在VIM或其他任何查看器中查看該文件,是否可以使用適當的格式/二進制內容下載它? – WilliamShatner 2013-05-13 19:24:40

+0

[你鏈接的問題](http://stackoverflow.com/questions/921262/how-to-download-and-save-a-file-from-internet-using-java)做到這一點。我不知道是什麼讓你擔心它不會是正確的二進制內容。 – 2013-05-13 19:25:47

+0

也許它從記事本中查看時顯得很奇怪。它看起來比記事本更清潔。我並不太擔心,這不是必要的。再次感謝! – WilliamShatner 2013-05-13 19:30:29

相關問題