目前,这是我想要做的事情:
所以我可以做多个不同的事情,但我希望尽可能以最节省内存的方式做到这一点。我也不希望它永远解析和比较文件。
选项1:
选项2:
这是我一直在研究的两个选项,但我知道还有更多。不确定它们是否更有效,但我几天没有用我的电脑直接访问互联网,所以我无法真正对它们进行测试。当我能够测试它一段时间后,我注意到需要一段时间才能直接从网站上解析信息。
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 :(得分:1)
在比较XML或JSON或任何其他序列化格式之类的内容时,您更关心的是数据而不是二进制内容。我的意思是
<Reps>8</Reps>
相当于
<Reps >8</Reps>
我的建议是下载XML文件,使用像JAXB这样的库来解析和转换(关键字:unmarshal
)文件的内容到Java对象(或列表/集)。对您以前的文件版本执行相同操作。然后比较java对象。使用集合,您可以计算两者之间的差异,从而创建仅包含差异的新文件(关键字:marshal
)。