在mongodb集合中存储XML数据

7

我对像mongodb这样的NoSQL数据库还比较新,敬请谅解我的无知。

背景:

目前,我的系统执行以下操作:

  1. 从客户端收集系统数据
  2. 将该信息输出到xml文档中
  3. 一个perl脚本将xml标签中的数据放入mySQL数据库中。
  4. 由Apache/PHP驱动的网站显示数据。

该系统的目的是作为服务器/机箱/网络设备等的库存。

这是一个可以接受的系统,但由于使用非关系型数据库存储类型数据的优点,我已决定转向非关系型数据库。

问题:

  1. 使用mongodb从xml文档中提取信息是否很简单?
  2. 我应该重写我已经拥有的脚本,以输出JSON/BSON文件而不是XML吗?
  3. 如何将文件中的信息放入mongodb数据库中?
4个回答

7

当迁移到NoSQL文档数据库时,决策高度受到客户端/用户读取或使用数据的影响,因为数据主要是基于使用模式预聚合/预连接的。因此,在技术上,您可以通过将数据转换为JSON/BSON而不是XML来导入数据来“技术性地”转移到MongoDB。


那么,您认为在流程中早些时候只更改几个步骤会更好?我也有这样的想法,但我只是想问一下,因为这将需要一些工作。 - Jeff
@Jeff 我想要表达的是,虽然在导入过程中改变几个步骤就可以将数据移动到mongodb,但是如果不知道数据的使用方式,很难回答如何在mongodb中存储数据以支持你的用例。 - Aravind Yarram
@Jeff 根据您提供的最新信息,我可以推断这主要是一个库存持有者,因此您可以安全地转移到MongoDB,从而获得无模式优势。 - Aravind Yarram

5
MongoDB不支持XML文档。所有的文档都以BSON格式存储在MongoDB中。 是的,你可以这样做。 MongoDB 驱动程序可用于许多语言。请使用它们。

2

在mongodb中,所有的文档都是以BSON格式存储的。您可以将XML作为字符串值存储到数据库中,例如 - {xml : "<root><test>测试XML</test></root>"}


1
这只是虚假的 :) - Omrum Cetin

-1
在Java中,你可以这样做 -
TestXML testXML = new TestXML();
        testXML.setXmlKey("test1" + new Date());

        BufferedReader br = new BufferedReader(new FileReader(new File(
                "C:/xml/newxml.xml")));
        String line;
        StringBuilder sb = new StringBuilder();

        while ((line = br.readLine()) != null) {
            sb.append(line.trim());
        }

        testXML.setXmlValue(sb.toString());
        mongoTemplate.save(testXML);

您可以使用以下Java代码读取该XML文件

List<TestXML> dbObjects = mongoTemplate.findAll(TestXML.class);
        for(TestXML key : dbObjects){
            System.out.println(key.getXmlValue());
        }

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