Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongodb将xml导入mongodb_Javascript_Python_Xml_Mongodb - Fatal编程技术网

Javascript mongodb将xml导入mongodb

Javascript mongodb将xml导入mongodb,javascript,python,xml,mongodb,Javascript,Python,Xml,Mongodb,我无法将大xml文件(1.3 gb)导入mongodb,以便以map&reduce方式搜索最频繁的单词 在这里,我附上从这个大文件中剪下的xml(前10000行): http://www.filedropper.com/text2 我知道我不能直接将xml导入mongodb。我用了一些工具来做。我使用了一些python脚本,但都失败了 我应该使用哪个工具或脚本?什么应该是键和值? 我认为找到最频繁世界的最佳解决方案是这样 (_id : id, value: word ) 然后我将对所有元素

我无法将大xml文件(1.3 gb)导入mongodb,以便以map&reduce方式搜索最频繁的单词

在这里,我附上从这个大文件中剪下的xml(前10000行):

http://www.filedropper.com/text2
我知道我不能直接将xml导入mongodb。我用了一些工具来做。我使用了一些python脚本,但都失败了

我应该使用哪个工具或脚本?什么应该是键和值? 我认为找到最频繁世界的最佳解决方案是这样

(_id : id, value: word )
然后我将对所有元素求和,如示例中所示:

如果有任何线索,我们将不胜感激,但如何将此文件导入mongodb以获得这样的集合呢

(_id : id, value: word )
如果你有任何想法,请分享

编辑 经过研究,我会使用python或js来完成这项任务

我将只提取
部分中
/
下的单词,排除<、>等,然后分离单词并使用pymongo或js将它们上传到mongodb

所以有几页有修订和文本


已编辑

要保存所有这些数据,请将它们保存在
Gridfs

转换
xml
最简单的方法是使用此工具将其转换为
json
并保存:

导入xmltodict
doc=xmltodict.parse(“”)
... 
...   
…元素
…更多元素
...   
...   
…元素也是
...   
... 
... """)
doc['mydocument']['@has']
Out[3]:u'an属性'

我使用的XML文件是这样的:

<labels>
     <label>
          <name>Bobby Nice</name>
          <urls>
               <url>www.examplex.com</url>
               <url>www.exampley.com</url>
               <url>www.examplez.com</url>
          </urls>
     </label>
     ...
</labels>

谢谢你的帮助,但这不起作用。我甚至安装了两个xmltodict模块(包括一个模块和两个官方模块,但“对象没有atribute解析…”我想我应该在上传之前提取和准备数据。比如:我刚刚测试了它,它工作了,这个例子工作了吗?是的,它工作了。我对如何导入mongodb有不同的想法。请看一看:,如果问题解决了,我会处理。有人知道如何将这么大的文件、文本部分转换成csv或JSON吗大文件的问题可以通过
fileinput
解决,因为您一次只加载一行,而不是将整个文件加载到内存中,然后您可以决定何时写入另一个文件(csv或json).你能给我举个例子吗?我做了这个,因为生成的文件非常大,然后使用
open
将使用所有内存,我尝试这样做,也得到了内存错误。。。。
<labels>
     <label>
          <name>Bobby Nice</name>
          <urls>
               <url>www.examplex.com</url>
               <url>www.exampley.com</url>
               <url>www.examplez.com</url>
          </urls>
     </label>
     ...
</labels>
var XmlStream = require('xml-stream');
// Pass the ReadStream object to xml-stream
var stream = fs.createReadStream('20080309_labels.xml');
var xml = new XmlStream(stream);

var i = 1;
var array = [];
xml.on('endElement: label', function(label) {
  array.push(label);
  db.collection('labels').update(label, label, { upsert:true }, (err, doc) => {
    if(err) {
      process.stdout.write(err + "\r");
    } else {
      process.stdout.write(`Saved ${i} entries..\r`);
      i++;
    }
  });
});

xml.on('end', function() {
  console.log('end event received, done');
});