使用jQuery解析数据

时间:2010-10-21 05:31:23

标签: jquery xml-parsing

<?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>

我需要将这些数据解析到表格中,以便其他每个内容都可以自己进入,而其他所有内容都是自己的。

最终看起来像这样:

<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>

我应该怎么做呢?感谢。

编辑:我知道XML不是应该的,但我对此无能为力。我只需要像那样解析它。

2 个答案:

答案 0 :(得分:0)

首先,您的XML无效:

<b>Description</c>

应该是

<b>Description</b>

<bDescription text here</b>

应该是

<b>Description text here</b>

编辑:您还应该考虑将XML结构更改为更合理的内容,例如

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

编辑#2:你也可以使用jQuery解析&amp;遍历您的XML,如下所示:

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

甚至更好:

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

等,其中parseXMLValue()是您自己的函数,可以使用特定XML节点的值。

答案 1 :(得分:0)

修复错误后,您可以执行以下操作:

$.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}
});

这适用于以下XML文档。

<?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>