Java 从url保存(xml)文件的更好方法是什么?
目前,我想做的是:Java 从url保存(xml)文件的更好方法是什么?,java,url,xml-parsing,download,Java,Url,Xml Parsing,Download,目前,我想做的是: 从url将xml文件保存到我的计算机 解析它并获取我想要的信息(这不是全部) 将解析的信息与xml的早期版本进行比较 所以我可以做很多不同的事情,但我希望尽可能以最节省内存的方式来做。我也不想花很长时间来解析和比较文件 备选案文1: 直接从url解析xml并将其保存到数组中 遍历数组并创建一个新的xml文件,其中只包含我想要创建新xml文件的解析信息 比较这两个xml文件 根据xml之间的差异编写新的xml文件 备选案文2: 使用任何建议的方法下载xml文件(这会保
- 从url将xml文件保存到我的计算机
- 解析它并获取我想要的信息(这不是全部)
- 将解析的信息与xml的早期版本进行比较
- 直接从url解析xml并将其保存到数组中
- 遍历数组并创建一个新的xml文件,其中只包含我想要创建新xml文件的解析信息
- 比较这两个xml文件
- 根据xml之间的差异编写新的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>
1.
上下快速移动
18
假的
篮球
2013年4月12日
www.gym.com/picId=10000
长凳
175
8.
2.
乔
23
假的
棒球
2013年4月10日
www.gym.com/picId=10001
长凳
205
8.
...
... # 3至124
...
125
艾米
17
假的
排球
2013年4月13日
www.gym.com/picId=10124
长凳
105
5.
总的来说,我想知道解析、比较和编写xml文件的最佳选择是什么
当我能够在线测试它时,需要一段时间来解析xml而不保存它。当xml文件位于我的计算机上时,它运行得相当快。但是下载文件会保留xml格式吗?是否值得从xml中保留我不需要的信息,以备以后需要?或者我必须解析并写出它(这似乎需要更长的时间)以保持格式?在比较XML或JSON或任何其他序列化格式时,您更关心的是数据而不是二进制内容。我的意思是
<Reps>8</Reps>
8
相当于
<Reps >8</Reps>
8
我的建议是下载XML文件,使用像JAXB这样的库来解析和转换(关键字:
unmarshal
)文件内容到Java对象(或列表/集合)。对以前版本的文件执行相同的操作。然后比较java对象。使用集合,您可以计算两者之间的差异,从而创建一个仅包含差异的新文件(关键字:marshal
)。无论您下载的是什么,它都归结为字节。如果您的url流提供的字节最终是正确的xml,那么这就是您将得到的结果(如果您从流中正确读取)。感谢您的建议。我该不该下载这个文件,这件事已经弄清楚了。如果我以后想在VIM或任何其他查看器中查看该文件,是否有方法下载具有正确格式/二进制内容的文件。我不知道是什么让你担心它不是正确的二进制内容。也许它只是在记事本上查看时奇怪地出现了。它在网站上看起来比记事本干净多了。我不太担心,这不是必要的。再次感谢!