Java JAXB解组多个对象,而不是列表

Java JAXB解组多个对象,而不是列表,java,xml,jaxb,unmarshalling,Java,Xml,Jaxb,Unmarshalling,我正在尝试创建一个包含多个对象但不包含对象列表的ummarshal XML文件。我没有存储列表,因为我需要非常频繁地附加单个对象 以下是通过编组XML生成的结果: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <message> <datetime>2015-03-26T10:33:52.540+02:00</datetime> <id>1</id&

我正在尝试创建一个包含多个对象但不包含对象列表的ummarshal XML文件。我没有存储列表,因为我需要非常频繁地附加单个对象

以下是通过编组XML生成的结果:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<message>
    <datetime>2015-03-26T10:33:52.540+02:00</datetime>
    <id>1</id>
    <rawChat>
        <members_ids>1</members_ids>
        <members_ids>2</members_ids>
    </rawChat>
    <sender>
        <id>1</id>
        <username>teso</username>
    </sender>
    <text>hello</text>
</message>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<message>
    <datetime>2015-03-26T10:38:59.576+02:00</datetime>
    <id>2</id>
    <rawChat>
        <members_ids>1</members_ids>
        <members_ids>2</members_ids>
    </rawChat>
    <sender>
        <id>1</id>
        <username>teso</username>
    </sender>
    <text>msg2</text>
</message>
我需要解开所有的信息。
您能告诉我一些方法吗?

先拆分您的XML文件。然后可以将每个部分解组到消息对象实例

您也可以考虑使用包含消息列表的消息存储。使用列表不应产生负面影响。 您的XML如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<messsages>
  <message>
    ...
  </message>
</messages>
这是一个有效的XML,可以通过JAXB通过一个简单的步骤将其解组。
如果处理大量消息,则不应将它们序列化为XML。如果目的是持久化它们,则应实施另一种更灵活的策略,并考虑到持久化数据时涉及的问题。

这不是有效的XML—事实上,它看起来像是多个XML文件串联在一起:事实上,重复XML序言也可能无效


列表被设计为非常频繁地附加单个对象,因此这应该是好的。

这不是有效的XML-您不能有。JAXB在这里帮不了你!您需要将消息对象包含在消息根对象中。例如,您可以使用StaX循环文件,并分别解组每条消息。或者。其想法是将聊天信息存储在客户端,而不是服务器数据库上,这就是为什么我需要这样的东西。请阅读上面的内容:基于文件的数据库。这就是几乎每个应用程序存储数据的方式——例如用于使用SQLLite的iTunes。不要重新发明轮子,特别是如果你不能画一个圆圈…我想过,但我需要存储数百条消息,我不想有100多个文件。谢谢你@正如前面提到的,这不是XML,它的SML标记语言。如果有一个jasbjavaapi用于steveml绑定,那么您就可以开始了。目前,您需要进行一些更改。尽管如果这是一个文件,为了附加一个元素,需要读取和重写整个文件以附加一个元素。所以这有一个问题,只是取决于公平的频率。我不想在内存中保留整个列表,并在每次添加新对象时重写文件。“有什么办法可以避免这种情况吗?”“是的。不要使用XML。或者,阅读有关流式API的内容—但是如果您的应用程序在没有完成XML编写的情况下崩溃,那么它将被损坏。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<messsages>
  <message>
    ...
  </message>
</messages>