将动态的XML转换为MongoDB

3

我目前正在开发一个应用程序(Java),并找到了解决问题的最佳方法。 我需要将数据存储在mongoDB中(支持bson格式时使用实际数据类型),我获取的数据来自一个xml文件和它的模式(两者都是在运行时动态创建的,所以我不知道里面有什么)。

更具体地说,我没有任何关于数据字段和名称的信息。 用户可以动态创建新的“对象”(在应用程序中没有java类),当用户创建一个新对象时,我会收到描述该对象的xml模式。 因此,当用户尝试添加此类型的对象(数据以xml格式存储为新实体)时,我会使用xml模式进行验证,现在我需要将对象存储在mogoDB中。 因此,我需要能够将我的xml转换为bson(或使用mongo java驱动程序的基本java对象),并在查询后将其转换回xml。

例如:

如果用户想要管理人员,他将定义人员模式:

<People>
   <Name>...</Name>
   <Lastname>...</Lastname>
   <Age>...</age>
   ...
</People>

这里我有一个包含所有信息的有效xsd格式。当用户添加一个人时,我会获取以下数据:

<People>
   <Name>John</Name>
   <Lastname>Smith</Lastname>
   <Age>32</Age>
   ...
</People>

我在想最好的方法是像Jackson一样:XML -> POJO -> BSON,或者使用XSLT将XML -> JSON/BSON(包括数据类型编码)。或者简单地通过手动读取XML文件和基本Java对象来实现。

有没有人对如何实现这些解决方案或更好的解决方案有建议?

2个回答

3

我相信你可以使用MongoJack来将XML神奇地转换成MongoDB可以理解的格式(反之亦然)


感谢您的回答。由于XML文件是由我的应用程序创建的,而且我不知道模式,因此我没有任何对应于我的数据的Java类。这意味着我必须使用Map.class(或其他容器),对吗? - Mathieu
不一定。如果您在问题中提供更多细节(例如目前的代码/架构,您的目标是什么等),我们就能更好地为您提供建议。 - Trisha
我编辑了我的帖子,希望更容易理解。再次感谢你的帮助。 - Mathieu

2

我使用了XSLT将XML转换为JSON,然后使用MongoDB Java驱动程序的JSON解析器将其转换为BSON,这个过程很顺利。但是我对性能不太确定。 - Mathieu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接