如何使用JAXB(或XStream)更新XML文件而不编写整个文件

Fat*_*ure 3 java xstream jaxb xml-serialization

举个例子,假设我有一个customerX.xml文件,我已经使用JAXB(或XStream)解组了.

我在Java对象中更新此客户的电话号码,然后将内容编组回同一个customerX.xml

这是 一个旧的jaxb xml更新示例,从2003年开始.但是可能有更好的方法.

问题

编组将写入文件的所有内容,虽然我只是更新单个元素?如果是,那么有没有更好的方法来使用JAXB或XStream编组和更新XML文件的特定元素?

如果多个线程可能编组到同一个XML文件,如何使编组操作线程安全?

ska*_*man 6

编组将写入文件的所有内容,虽然我只是更新单个元素?

是.编组人员不知道或不关心你改变了多少,它所关心的只是编组时物体的状态.

有没有更好的方法来使用JAXB或XStream编组和更新XML文件的特定元素?

并不是的.如果您需要更新数据片段,那么数据确实应该存储为单独的文件,而不是一个大文件.

如果多个线程可能编组到同一个XML文件,如何使编组操作线程安全?

使用常规的java线程同步技术(即使用synchronized方法,或使用锁定工具java.util.concurrent).