Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2019, 13:43
Новичок на форуме
Отправить личное сообщение для RichardRow Посмотреть профиль Найти все сообщения от RichardRow
 
Регистрация: 20.05.2019
Сообщений: 2

Загрузка из XML
Всем доброго времени суток.

Есть скрипт загрузки из XML в MongoDB:
var fs = require('fs'),
    xml2js = require('xml2js');
var MongoClient = require("mongodb").MongoClient;
var fullXML;
var parser = new xml2js.Parser();
var year = 2018;
var month = 'June';
var detellization;

fs.readFile('File.xml','utf-8',function(error,data){
  console.log('Read...');
  parser.parseString(data,function (error,result){
    fullXML =  result;
    detallization ={
      tel: []
    };

     for (var i=0;i<fullXML.Report.tp.length;i++){
       detallization.tel[i]= {
         phoneNumber:fullXML.Report.tp[i]['$'].n,
         servicesSum:fullXML.Report.tp[i]['$'].a,
         callsSum:fullXML.Report.ds[i]['$'].f,
         tariff:fullXML.Report.tp[i].ts[0]['$'].n,
         callsAll:[],
         service:[],
         year:year,
         month:month
       };
       
       if(fullXML.Report.tp[i].ss){
         for (var j = 0; j < fullXML.Report.tp[i].ss.length; j++) {
           detallization.tel[i].service[j]={
             nameService:fullXML.Report.tp[i].ss[j]['$'].n,
             sumSer:fullXML.Report.tp[i].ss[j]['$'].a
           }
         }
       }
       //Парсим ветку DS
       if(fullXML.Report.ds[i].i){
        for(var j=0;j<fullXML.Report.ds[i].i.length;j++){
	    detallization.tel[i].callsAll[j]={
            date:fullXML.Report.ds[i].i[j]['$'].d,
            oneService:fullXML.Report.ds[i].i[j]['$'].n,
            priceService:fullXML.Report.ds[i].i[j]['$'].f,
            time:fullXML.Report.ds[i].i[j]['$'].du,
          }
        }
     }
    }

    MongoClient.connect("mongodb://localhost:27017/mtc",function (err,db){
      db.collection("mtc").insertMany(detallization.tel, function (err,result) {
        if (err){return console.log(err);}
         console.log(result.ops);
        db.close();
      });
    });
   console.log(detallization);
   });
});


Сам скрипт работает, вопросов по нему нету, но необходимо пропускать значения равные нулю в данном месте
priceService:fullXML.Report.ds[i].i[j]['$'].f,


Лично у меня не хватает знаний по данному вопросу, может кто-то помочь? Я понимаю, что дело решается, скорее всего, простой конструкцией наподобие:
if(fullXML.Report.ds[i].i){
        for(var j=0;j<fullXML.Report.ds[i].i.length;j++){
            if(fullXML.Report.ds[i].i[j]['$'].f > 0){
	    detallization.tel[i].callsAll[j]={
            date:fullXML.Report.ds[i].i[j]['$'].d,
            oneService:fullXML.Report.ds[i].i[j]['$'].n,
            priceService:fullXML.Report.ds[i].i[j]['$'].f,
            time:fullXML.Report.ds[i].i[j]['$'].du,}}}

Приведённая конструкция не работает, а у меня лично не хватает понимания что и как правильно расположить, поскольку JS-ом владею достаточно плохо. На форуме аналогичной темы не нашёл, хотя мог просмотреть.
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2019, 16:58
Новичок на форуме
Отправить личное сообщение для RichardRow Посмотреть профиль Найти все сообщения от RichardRow
 
Регистрация: 20.05.2019
Сообщений: 2

Решение для данного вопроса
if(fullXML.Report.ds[i].i){
for(var j=0;j<fullXML.Report.ds[i].i.length;j++){
let calls = fullXML.Report.ds[i].i[j]['$'].f
if (parseFloat (calls) > 0){
detallization.tel[i].callsAll.push({
date:fullXML.Report.ds[i].i[j]['$'].d,
oneService:fullXML.Report.ds[i].i[j]['$'].n,
priceService:fullXML.Report.ds[i].i[j]['$'].f,
time:fullXML.Report.ds[i].i[j]['$'].du,
})
}
}
}
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Частая загрузка XML не нагружая память biryukovm AJAX и COMET 4 19.12.2017 09:11
Кроссдоменная загрузка XML nule AJAX и COMET 8 28.12.2011 12:22
Загрузка и обработка xml файла Visvitalis jQuery 0 26.09.2011 16:09
Загрузка XML документа zeraid Общие вопросы Javascript 0 25.05.2011 16:10
загрузка данных из XML, почему загружает только в Explorer asked86 AJAX и COMET 2 18.12.2009 16:29