# jquery xml in html auslesen



## Curry92 (9. September 2011)

Ich möchte aus einem XML daten in eine html Tabelle speichern, das mit den daten auslesen habe ich schon geschafft aber die anzeige macht mir probleme.
Ich möchte sie zweidimensional anzeigen also auf der x-,y-achse sollen daten ausgegeben werden.
Das war auch noch machbar aber jetzt werden die schnittstellen zwischen der x und y achse nicht angezeigt..
Wie füge ich in die schnittstellen leere spalten ein?

grüße


----------



## CPoly (9. September 2011)

Ich verstehe leider nicht was du willst. Meinst du mit x- und y-Achse die Zeilen und Spalten der Tabelle?

Zeig doch mal deine Eingabedaten (XML), deinen jetzigen Code und die Wunsch-Ausgabe (Beispiel Tabelle).


----------



## Curry92 (9. September 2011)

hier sind die funktionen die die tabellen befüllen:


```
function createDimension(dRow) {

    var myTable = document.createElement("table");
    var mytablebody = document.createElement("tbody");
    var selectedProj = $('#ui_Project option:selected').text();

    for (var j = 0; j < 1; j++) {
        mycurrent_row = document.createElement("tr");
        mycurrent_row1 = document.createElement("tr");
        $.get(selectedProj, {}, function (xml) {   
            $('BiDimension', xml).children('Name').each(function (d) {

                var title2 = $(this).text();
                mycurrent_cell = document.createElement("td");
                currenttext = document.createTextNode(title2);
                mycurrent_cell.appendChild(currenttext);
                mycurrent_row.appendChild(mycurrent_cell);
                mytablebody.appendChild(mycurrent_row);


            });
        });
    }

    myTable.appendChild(mytablebody);
    return myTable;
}

//create Measures
function createMeasure(mRow) {

    var myTable = document.createElement("table");
    var mytablebody = document.createElement("tbody");
    var selectedProj = $('#ui_Project option:selected').text();
    var selectedCube = $('#ui_Cubes option:selected').text();
    var cube;


        $.get(selectedProj, {}, function (xml) {
          
            $('BiCube', xml).find('BiMeasure').children('Name').each(function (d) {

                cube = $(this).parent().parent().parent().children('Name').text();

                if (cube === selectedCube) {
                    for (var i = 0; i < 1; i++) {


                        var title2 = $(this).text();  
                        mycurrent_row = document.createElement("tr");
                        mycurrent_cell = document.createElement("td");
                        currenttext = document.createTextNode(title2);
                        mycurrent_cell.appendChild(currenttext);
                        mycurrent_row.appendChild(mycurrent_cell);
                        mytablebody.appendChild(mycurrent_row);
                    }
                }
            });

        });


    myTable.appendChild(mytablebody);
    return myTable;
}
```

ausgeben soll es sowas: 
http://www.google.at/imgres?q=zweid...rt=0&ndsp=25&ved=1t:429,r:13,s:0&tx=168&ty=85

also die measures gehn vertikal runter und die dimensions horizontal rüber
ich hoff das war verständlicher 

grüße


----------



## Curry92 (9. September 2011)

also den text soll es nicht so drehen wie in dem beispiel.
einfach so

__|B |C |D |E |F |G |H |I |...
A1|__|__|__|__|__|__|__|__|__|
A2|__|__|__|__|__|__|__|__|__|
A3|__|__|__|__|__|__|__|__|__|
A4|__|__|__|__|__|__|__|__|__|


----------



## CPoly (9. September 2011)

Das ist schon mal Aufschlussreicher als dein erster Post ;-)

Aber das XML wäre noch wichtig, denn ich kann nicht ahnen wie "BiCube", "BiMeasure" und "Name" vorliegen.

Aber eins kann ich direkt sagen: Wenn man größere Änderungen am DOM vornimmt, benutzt man besser nicht createElement, createTextNode, appendChild und den ganzen Kram, sondern baut sich einen großen HTML-String zusammen und steckt diesen erst dann ins Dokument. Das ist wesentlich performanter. In deinem Fall wohl auch übersichtlicher.


----------



## Curry92 (9. September 2011)

das xml ist so aufgebaut:


```
hier sind die measure drinnen (sind normal mehr)
<BiCubes>
<BiCube>
      <Name>SWB</Name>
      <ID>Cube_BMM</ID>
      <BiMeasures>
        <BiMeasure>
          <Name>h_Auftrag_Anzahl</Name>
          <ID>Dim Auftrag Count</ID>
          <AggregateFunction>Count</AggregateFunction>
          <MeasureGroupID>Dim Auftrag</MeasureGroupID>
          <SourceColumn>Auftrag_ID</SourceColumn>
          <Visible>false</Visible>
        </BiMeasure>
</BiCube>
</BiCubes>

.....
 und hier die dimensions:

<BiDimensions>
 <BiDimension>
      <Name>Verkehrsunternehmen</Name>
      <ID>Verkehrsunternehmen</ID>
</BiDimension>
<BiDimension>
      <Name>Anlage</Name>
      <ID>dim_Anlage</ID>
 </BiDimension>
</BiDimensions>
```

Würde es sonst vl mit einem datatable plugin ****en?

grüße


----------



## CPoly (9. September 2011)

Tut mir Leid, vielleicht stehe ich auf dem Schlauch, aber ich weiß nicht wie daraus eine Tabelle werden soll.

Schreib dir mal nur die XML Knoten auf, die für dich interessant sind. Anschließend schreibst du für eins der XML Dokumente mal von Hand die komplette HTML Tabelle, so wie sie später aussehen soll. Vielleicht erkennst du dann, wie du das angehen musst.


----------



## DeluXe (11. September 2011)

So wie ich das verstehe, möchtest du soetwas:

_(Nicht schön, aber selten. )_


```
var xml = jQuery( '<BiCubes><BiCube><Name>SWB</Name><BiMeasures><BiMeasure><Name>h_Auftrag_Anzahl</Name></BiMeasure><BiMeasure><Name>h_Auftrag_Anzahl2</Name></BiMeasure><BiMeasure><Name>h_Auftrag_Anzahl3</Name></BiMeasure></BiCube></BiCubes><BiDimensions><BiDimension><Name>Verkehrsunternehmen</Name><ID>Verkehrsunternehmen</ID></BiDimension><BiDimension><Name>Anlage</Name></BiDimension></BiDimensions>' ),
	dimension_count = xml.find( 'BiDimension' ).size(),
	table = '<table><tr><td></td>';

jQuery( 'BiDimension', xml ).each(function( i ){
	table += '<td>' + jQuery( 'Name', this ).text() + '</td>';
});

table += '</tr>';

jQuery( 'BiMeasure', xml ).each(function( i ){
	table += '<tr><td>' + jQuery( 'Name', this ).text() + '</td>';
	
	for( var i = 0; i < dimension_count; i++ ) {
		table += '<td></td>';
	}
	
	table += '</tr>';
});
	
table += '</table>';

jQuery( 'body' ).append( table );
```


----------

