将XML数据存储在mongodb集合中

时间:2013-05-17 13:43:17

标签: xml mongodb

我对像mongodb这样的NoSQL数据库还是比较新的,所以请原谅我的无知。

背景

现在,我有一个系统可以执行以下操作:

  1. 从客户收集系统数据
  2. 将该信息输出到xml文档
  3. perl脚本获取xml标记中的数据并将其放入mySQL数据库中。
  4. 一个apache / php驱动的网站显示数据。
  5. 此系统的目的是充当服务器/机箱/网络设备/等的库存。

    这是一个好的系统,但是我决定去一个非关系型数据库,因为我在使用它时所看到的优势是我存储的数据类型。

    问题:

    1. 使用mongodb从xml文档中提取信息非常简单吗?
    2. 我应该重写我必须输出JSON / BSON文件而不是XML的脚本吗?
    3. 如何从文件中获取信息并将其放入mongodb数据库?

4 个答案:

答案 0 :(得分:5)

当转移到NoSQL文档数据库时,决策受客户端/用户如何读取或使用数据的影响很大,因为数据大部分是基于预先聚合/预加入的使用模式。所以,从技术上讲,你可以通过在导入数据时将数据转换为json / bson而不是xml来“技术上”移动到mongodb。

答案 1 :(得分:4)

  1. MongoDB不支持xml文档。 mongodb中的所有文档都以BSON格式存储。
  2. 是的,你可以这样做。
  3. Mongodb drivers适用于多种语言。使用它们。

答案 2 :(得分:1)

mongodb中的所有文档都以BSON格式存储。您可以将xml作为String值存储到数据库中。喜欢 - {xml : "<root><test>Test XML</test></root>"}

答案 3 :(得分:0)

在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());
        }