Fenici
Fenici

Reputation: 461

how to write a XML data 2 Dimensional Array

the snippt shows the XML detail : please referes to the image, shows the table...

<ExtractSummaryDateSet>
      <_date>2017-09-20</_date>
      <_portfolioSummaries>
        <ExtractSummaryDateSetDetail>
          <_portfolioName>52613661_CL</_portfolioName>
          <_detail>
         
            <Before>0</Before>
            <After>-329</After>
            <ChangeMaturing>0</ChangeMaturing>
            <ChangeNew>-329</ChangeNew>
            
           
          </_detail>
        </ExtractSummaryDateSetDetail>
        <ExtractSummaryDateSetDetail>
          <_portfolioName>52613661_LP</_portfolioName>
          <_detail>
           
         
            <Before>0</Before>
            <After>-329</After>
            <ChangeMaturing>0</ChangeMaturing>
            <ChangeNew>-329</ChangeNew>
         
          </_detail>
        </ExtractSummaryDateSetDetail>
        <ExtractSummaryDateSetDetail>
          <_portfolioName>526136|Total</_portfolioName>
          <_detail>
         
            <Before>0</Before>
            <After>-329</After>
            <ChangeMaturing>0</ChangeMaturing>
            <ChangeNew>-329</ChangeNew>
            
           
          </_detail>
        </ExtractSummaryDateSetDetail>

I am trying to use 2 Dimential arrays in XML to create a table HTML

        for (var i = 0; i < x.length; i++){
                  var row= x[i];
                  var date = row.getElementsByTagName("Date")[0].childNodes[0].nodeValue;
        for(var j = 0;j < row.length; j++){

            var  before = row[j].getElementsByTagName("Before")[0].childNodes[0].nodeValue; 
            var  after = row[j].getElementsByTagName("after")[0].childNodes[0].nodeValue; 
    }
}

just wanna know is the example above semantically correct?
in the second array can i use row[j] to call the array

for (var y = 0; y < x.length; y++){


for (var i = 0; i < x[i].length; i++){

    table_summary +="<th></th><th></th><td>" + x[y][j].getElementsByTagName("_date")[0].childNodes[0].nodeValue + "</td>" ;

}

how do I pass the value correctly? x[y][i] can't not find the value.

enter image description here

Upvotes: 0

Views: 481

Answers (2)

Ali Soltani
Ali Soltani

Reputation: 9927

I am working on XML format in web application and encounter to similar your issue. You can transform XML to HTML like your method but create HTML tags from XML is very cumbersome.

I suggest you use XSLT for this transform.

I created a simple XSLT for your XML and converted this transform very easily.

Please see Online transform and click html in result panel to see HTML output for your XML.

Upvotes: 1

MartinByers
MartinByers

Reputation: 1240

You can consider a multi dimensional array as an array of arrays.

so this is fine :

for (var i = 0; i < x.length; i++){
    var row= x[i]

    for(var j = 0;j < row.length; j++){
        var  before = row[j];
    }
}

However you can also write this as :

for (var i = 0; i < x.length; i++) {
    for(var j = 0;j < x[i].length; j++) {
        var  before = x[i][j];
    }
}

Upvotes: 0

Related Questions