XML-данные в HashMap

Мне нужно сохранить данные XML в хэш-карте, я использую модуль npm nodejs и xmldom для анализа XML.

Я пытаюсь сохранить имя набора тестов, имя тестового набора и значение dt_value в хэш-карте.

вот мой XML-код

   <testscenario>
     <testsuite name = "com.edge.route">
        <testcase name = "tc_Login">dt_Login</testcase>
        <testcase name = "tc_Logout">dt_Logout</testcase>
     </testsuite>
     <testsuite name = "com.edge.beacon">
        <testcase name = "tc_Channel">dt_Channel,dt_Logout</testcase>
     </testsuite>
  </testscenario>

Вот что я пробовал до сих пор

var DOMParser = require('xmldom').DOMParser;
var parser = new DOMParser();
var HashMap = require('hashmap');
var fs = require('fs');

module.exports = {
  testScenario: function() {
    var suiteName;
    var data;
    var map = new HashMap();

    //read the testscenario.xml
    data = fs.readFileSync("./testscenario.xml", "utf8");

    var dom = parser.parseFromString(data);
    var testSuiteList = dom.getElementsByTagName("testsuite");

    //loop through all the test suites
    for (i = 0; i < testSuiteList.length; i++) {
      //select the test suite with the given name
      suiteName = testSuiteList[i].getAttribute("name");
      var tcList = testSuiteList[i].getElementsByTagName("testcase");
      var dtList = testSuiteList[i].getElementsByTagName("testcase")[0].childNodes[0].nodeValue;
      console.info(dtList)
      //get the row count
      tcLength = tcList.length;

      //push column headers as the key in the hashmamp
      var testCaseList = [];
      for (x = 0; x < tcList.length; x++) {
        testCaseList.push(tcList[x].getAttribute("name"));
      }
      console.info(testCaseList)

      var dataTableList = [];
      for (i = 0; i < tcLength; i++) {
        dataTableList += tcList[i].childNodes[0].nodeValue;
      }

      console.info("dtlist = " + dataTableList);

      //push the row values as an array to the hashmap     
      map.set(suiteName, testCaseList);

    }
    return [map]
  }
};

Я могу получить пару ключей и значений для набора тестов и набора тестов, но мне также нужно получить dt_name. как я могу изменить этот код, чтобы сохранить dt_name вместе с именами тестов и наборов тестов в этой хэш-карте?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
136
1

Ответы 1

Хорошо разобрался. Вот как я это сделал. Я использовал хэш-карту в хеш-карте

//XML Reader
var DOMParser = require('xmldom').DOMParser;
var parser = new DOMParser();
var HashMap = require('hashmap');
var fs = require('fs');

module.exports = {
    testScenario: function () 
{     
    var suiteName;
    var data;
    var map = new HashMap();

        //read the testscenario.xml
        data=fs.readFileSync("./testscenario.xml","utf8");

        var dom = parser.parseFromString(data);
        var testSuiteList = dom.getElementsByTagName("testsuite");

        //loop through all the test suites
        for (i=0;i< testSuiteList.length; i++) { 

            //select the test suite with the given name
            suiteName = testSuiteList[i].getAttribute("name");              
            var tcList = testSuiteList[i].getElementsByTagName("testcase");

            //get the row count
            Length=tcList.length;

            //push column headers as the key in the hashmamp
            var testCaseList = new HashMap();
            for(x=0;x<Length;x++)
            {
             testCaseList.set(tcList[x].getAttribute("name"),tcList[x].childNodes[0].nodeValue); 
            } 

            //push the row values as an array to the hashmap     
            map.set(suiteName,testCaseList); 

         }  
         return [map]    
        }
};

Другие вопросы по теме