【问题标题】:What is the better way to save a (xml) file from a url?从 url 保存(xml)文件的更好方法是什么?
【发布时间】:2013-05-13 18:42:57
【问题描述】:

目前,这是我想要做的:

  • 将 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 中保留我不需要的信息,以防我以后需要它?还是我必须解析它并写出来(这似乎需要更长的时间)才能保持格式?

【问题讨论】:

  • 无论您下载什么,它都归结为字节。如果您的 url 流提供的字节最终是正确的 xml,那么这就是您最终会得到的(如果您正确地从流中读取)。

标签: java url xml-parsing download


【解决方案1】:

在比较诸如 XML 或 JSON 或任何其他序列化格式之类的内容时,您更关心数据而不是二进制内容。我的意思是

<Reps>8</Reps>

等价于

<Reps       >8</Reps>

我的建议是下载 XML 文件,使用 JAXB 之类的库来解析和转换(关键字:unmarshal)文件的内容为 Java 对象(或列表/集合)。对文件的先前版本执行相同操作。然后比较java对象。使用 Sets,您可以计算两者之间的差异,从而创建一个仅包含差异的新文件(关键字:marshal)。

【讨论】:

  • 感谢您的建议。它绝对清楚我是否应该下载文件。如果我以后想在 VIM 或任何其他查看器中查看文件,有没有办法以正确的格式/二进制内容下载它?
  • question you linked 就是这样做的。我不知道你担心它不是正确的二进制内容。
  • 也许它只是在从记事本中查看时奇怪地显示出来。它在网站上看起来比记事本干净得多。我不太担心,这不是必需品。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多