XML-данные в HashMap - PullRequest
       5

XML-данные в HashMap

0 голосов
/ 17 сентября 2018

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

Я пытаюсь сохранить имя testuite, имя testcase и 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.log(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.log(testCaseList)

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

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

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

    }
    return [map]
  }
};

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

1 Ответ

0 голосов
/ 19 сентября 2018

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

//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]    
        }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...