2016-03-09 24 views
-1

我想在Node.js中编写一个脚本,它将导入一个文本文档。该文本包含三个包含多个元数据标签的报纸文章。我需要为每篇文章获取其中两个标签的内容,并将其放入数组或JSON文件中。如何获取Node中每个标签的实例?

例如,其中一个标记对是<text></text>,其中包含文章的全文。另一个是<docid></docid>,其中包含每篇文章的唯一编号。最好我的数组最终会看起来像像

articles = [[docid1, text1], [docid2, text2], [docid3, text3]] 

或者也许因为风格类似

{"article1" : {"docid" : "docid1", "text" : "text1"} 
"article2" : {"docid" : "docid2", "text" : "text2"} 
} 

使用substringsearch()我能得到的第一篇文章的内容,使用下面的代码JSON文件:

var substring = string.substring(string.search("<text>"), string.search("</text>")) 

但我不需要只是第一篇文章,但每个地方有一对实例的内容标签。

我可以使用search()查找多个结果并将其填入数组中吗?

文本格式如下。它类似于html,但我不认为它是正确的。:

<doc> 
<docid> 1 </docid> 
<date> 
January 1, 2000 
</date> 
<headline> 
SOMETHING HAS HAPPENED IN THE WORLD 
</headline> 
<byline> 
By Andy N. Onymous. 
</byline> 
<text> 
Blah blah this is text blah blah lorum ipsum dolor sit amet. 
</text> 
</doc> 
+0

我会去与流清洁方法:创建一个ReadStream通过一个读你的文本文件,管这或多个变换提取您的标记之间的信息流,最后用WriteStream来将结果存储在文件或新字符串中。 –

+0

什么是文本文件的格式。它是HTML还是XML? – jfriend00

+0

这是一个.txt文件 –

回答

0

我设法弄明白了!我不得不在for循环中使用substring -approach来获取每个文档的docid和文本,并将它们放入数组中。这可能不是最干净的方法,但溪流给了我恶梦,这对我很有用!该代码是:

var fs = require('fs'); 

var collection = fs.readFileSync('collection.txt').toString(); 

var articles = collection.split('</doc>'); 
var articleCount = articles.length-1 
var articleArray = []; 

for (var i=0; i < articleCount; i++) { 
    articleArray[i] = [articles[i].substring(articles[i].search('<docid>')+7, articles[i].search('</docid>')), articles[i].substring(articles[i].search('<text>')+6, articles[i].search('</text>'))]; 
    } 

    console.log(articleArray[1]); 
相关问题