如何使用JQuery解析XML文件以更新HTML表

时间:2012-02-12 15:52:08

标签: javascript jquery html xml ajax

我需要解析将是某种格式的XML文件,然后确定主队或客队是否赢了,然后将3或1分分配给由结果确定的HTML表(总分列),我会我更喜欢用JQuery来做这件事。

results.xml代码:

<?xml version="1.0"?>
<title>Results</title>
  <results>
    <result id="1234">
      <hometeam>
        <name>Roma</name>
        <score>2</score>
      </hometeam>
      <awayteam>
        <name>Lazio</name>
        <score>0</score>
      </awayteam>
  </result>
</results>

HTML代码:

<table id="table">
<th>Team</th>
<th>Played</th>
<th>Won</th>
<th>Drawn</th>
<th>Lost</th>
<th>Total Goals</th>
<th>Overall Points</th>

<tr>
<td>Roma</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>Lazio</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>Inter</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>Milan</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</table>

JQuery代码:

function showData() {
$.ajax({
type: "GET",
url: "results.xml",
dataType: "xml",

这是我到目前为止所有JQuery代码。

计算结果的计算在哪里?

if (hometeam score > awayteam score)
{ add 3 to hometeams Overall Points}
else if (hometeam score = awayteam score)
{ add 1 to hometeams Overall Points and add 1 to awayteams Overall Points}
else 
{ add 3 to awayteams Overall Points}

我如何评估hometeam和awayteam得分并更新HTML表格中的正确团队?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

当然,您可以使用javascript来解析xml,例如使用jQuery的parseXML函数。 http://api.jquery.com/jQuery.parseXML/

但是,这可能会很慢,因为每次最终用户访问您的页面时都必须解析一个大文件。 XML文件往往很重要。

我会首先将XML转换为JSON或数据库行。

PHP有一个名为Simple XML Parser的库,它随大多数发行版一起提供。界面非常简单。 Python还有一个名为lxml的丰富库来解析XML。

当然,如果你真的想用javascript解析XML,我认为这个问题很有帮助。 Paging Through XML Data Using jQuery and HTML

答案 1 :(得分:0)

比较你的ajax电话时

$.ajax({
type: "GET",
url: "results.xml",
dataType: "xml",

jquery documentation中的示例,您会看到缺少的内容。 以下是您的电话可能的样子:

$.ajax({
  url: "results.xml",
  dataType: "xml",
  type: "GET",
  success: function(data){
    // do something with data
  }
});

如果成功返回数据,则需要指定将被调用的函数。 在上面的示例中,该函数是一个匿名函数。你也可以使用普通的功能 名字:

function handle_success(data){
    // do something with data
}

$.ajax({
  url: "results.xml",
  dataType: "xml",
  type: "GET",
  success: handle_success
});

但要注意AJAX中的A:它代表异步。意思是: 你的成功函数将在很晚以后被调用,甚至永远不会。 在ajax调用之后,你的程序的其余部分将照常继续。