【问题标题】:Dynamic xml into mongoDB动态 xml 到 mongoDB
【发布时间】:2013-09-04 10:49:02
【问题描述】:

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

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

例子:

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

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

在这里,我得到了 xsd(包含所有信息的有效 xsd 格式)。然后,当用户添加人员时,我会得到这样的数据:

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

所以我想知道最好的方法是像 jackson: xml -> Pojo -> bson,还是使用 XSLT xml -> json/bson(使用数据类型编码)。或者简单地通过手动读取 xml 文件和我的基本 java 对象。

是否有人对如何实施其中一种解决方案或更好的解决方案提出了一些建议?

【问题讨论】:

    标签: java xml json mongodb xslt


    【解决方案1】:

    我相信您可以使用MongoJack 神奇地将您的 XML 转换为 MongoDB 可以理解的内容(反之亦然)

    【讨论】:

    • 感谢您的回答。我没有任何与我的数据对应的 java 类,因为 xml 文件是由我的应用程序创建的,而且我不知道架构。这意味着我必须使用 Map.class(或其他容器)对吗?
    • 不一定。如果您在问题中提供更多详细信息(您目前拥有什么代码/架构,您的目标是实现什么等),我们可以更好地为您提供建议。
    • 我编辑了我的帖子,希望它更容易理解。再次感谢您的帮助
    【解决方案2】:

    最好的方法似乎是 XML JSON 见:Quickest way to convert XML to JSON in Java

    然后你可以使用 com.mongodb.util.JSON 解析和序列化 JSON BSON。

    【讨论】:

    • 我使用 xlst 将 XM Linto JSON qnd 转换为 BSON,然后使用 MongoDB java 驱动程序 JSON 解析器转换为 BSON,效果很好。但我不确定性能
    猜你喜欢
    • 2017-01-26
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2014-01-25
    • 2013-07-28
    • 2017-02-20
    相关资源
    最近更新 更多