2010-10-21 5 views
-1
<?xml version="1.0" encoding="utf-8"?> 
<blamatrixrix> 
<name></name> 
<columns number="2"> 
<column id="title" num="0">Title</column> 
<column id="content" num="1">Content</column> 
</columns> 
<rows number="7"></rows> 
<b>Description</b> 
<b>Description text here</b> 
<b>Some title 1</b> 
<b>Some text blabla for Some title 1</b> 
<b>Some title 2</b> 
<b>Some text blabla for Some title 2</b> 
<b>Some title 3</b> 
<b>Some text blabla for Some title 3</b> 
<b>Some title 4</b> 
<b>Some text blabla for Some title 4</b> 
<b>Some title 5</b> 
<b>Some text blabla for Some title 5</b> 
<b>Some title 6</b> 
<b>Some text blabla for Some title 6</b> 
</blamatrixrix> 

je aurais besoin d'analyser ces données dans le tableau afin que tous les autres contenu irait en propre et tous les autres en propre.données avec jQuery Parsing

final ressemblerait à ceci:

<tr><td>Some title 1</td> <td>Some title 2'</td> <td>Some title 3</td> <td>Some title 4'</td></tr> 
<tr><td>Some text 1</td><td>Some text 2</td><td>Some text 3</td><td>Some text 4</td></tr> 

Comment dois-je commencer à le faire? Merci.

EDIT: Je sais que le XML n'est pas comme il devrait, mais je ne peux rien faire à ce sujet. J'ai juste besoin d'analyser quand c'est comme ça.

Répondre

0

Pour commencer, votre XML est invalide:

<b>Description</c> 

devrait être

<b>Description</b> 

et

<bDescription text here</b> 

devrait être

<b>Description text here</b> 

Edit: vous devriez également envisager de modifier votre structure XML à quelque chose de plus logique, comme

<rows number="7"> 
    <row> 
     <description>Description</description> 
     <text>Description text here</text> 
    </row> 
    ... 
</rows> 

Edit # 2: vous pouvez aussi utiliser jQuery pour analyser & traverse votre XML, comme ceci:

$(xml_string).children().each(function(c) { 
    // do something 
}); 

Ou encore mieux:

parseXMLValue($(xml_string).find('noniterablenode').text()); 
... 
$(xml_string).find('iterablenode').each(function(e) { 
    // do something with your iterable elements 
}); 

etc, où parseXMLValue() serait votre propre fonction d'utiliser la valeur d'un pas XML spécifique de.

+0

Désolé, ce mauvais copier-coller de moi. C'est comme ça. – samuelblok

+0

Oui, je sais ce n'est pas très logique mais malheureusement, je ne peux pas ne pas modifier le xml. J'aurais juste besoin de l'analyser et je ne sais pas par où commencer. – samuelblok

+0

Cela semble fonctionner :) Merci pour cela. $ (xml_string) .children(). Each (fonction (c) { // fait quelque chose }); Mais je ne sais pas comment continuer. Une sorte de boucle et ensuite mettre la table? Si je conglose.log le c je reçois juste les numéros 1-16. Tableaux? – samuelblok

0

Une fois les erreurs que vous pourriez faire quelque chose fixés comme suit:

$.ajax( 
    url: "path/to/file.xml", 
    type: "GET", 
    dataType:"xml", 
    success: function(xml){ 
    var cols = []; 

    $(xml).find("col").each(function(){ 
     cols.push({ 
     id:$(this).attr('id'), 
     text:$(this).text() 
     }); 
    }); 

    $(xml).find("row").each(function(){ 
     var info = "<tr>"; 

     for(var i = 0; i < cols.length; i++) { 
     info += "<td>" + $(this).find(cols[i].id).text() + "</td>"; 
     } 

     info += "</tr>"; 

     $("#table").append(info); 
    }); 
    }, 
    error : function(){ //some code} 
}); 

Cela fonctionnerait avec le document XML suivant.

<?xml version="1.0" encoding="utf-8"?> 
<tableinfo> 
    <columns> 
    <col id="title">Title</column> 
    <col id="content">Content</column> 
    </columns> 
    <rows> 
    <row> 
     <title>test</title> 
     <content>text content</content> 
    </row> 
    <row> 
     <title>test2</title> 
     <content>more text content</content> 
    </row> 
    </rows> 
</tableinfo>