gpt4 book ai didi

java - 从 url 保存 (xml) 文件的更好方法是什么?

转载 作者:行者123 更新时间:2023-12-01 14:35:27 24 4
gpt4 key购买 nike

目前,我想做的是:

  • 将 xml 文件从网址保存到我的计算机
  • 解析它并获取我想要的信息(并非全部)
  • 将解析后的信息与昨天版本的 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 中不需要的信息,以备日后需要?或者我是否必须解析它并将其写出来(这似乎需要更长的时间)才能保持格式?

最佳答案

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

<Reps>8</Reps>

相当于

<Reps       >8</Reps>

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

关于java - 从 url 保存 (xml) 文件的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16528945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com