javascript - 如何调用xml信息
黄舟
黄舟 2017-04-11 11:48:50
[JavaScript讨论组]

我的xml文件如下:



  
    日期
    build号
    通过率
  
  
    日期
    build号
    通过率
  
  
    日期
    build号
    通过率
  
  
    日期
    build号
    通过率
  
  
    日期
    build号
    通过率
  

我想日期在一行,build号在一行,通过率在一行,这样对应着形成表格。

日期 日期 日期 日期
build build build build
rate rate rate rate

而我这样写

    

直接变成

我只会一行行来写,但是那样我的xml格式就要变动。
请问我要不变xml格式怎样生成合适的表格?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(4)
高洛峰

我的做法可能会更慢一些,因为中间转换了数据,但是应该更好理解。

https://jsfiddle.net/kvoedtjb/

// 用这个来模拟 ajax 得到的 xml
const xml = $(xml);

// 先从 XML 提取数据,以 JavaScript 对象形式取出来
const data = $("build")
    .map((i, build) => {
        const $build = $(build);
        return {
            date: $build.children("date").text(),
            buildnum: $build.children("buildnum").text(),
            rate: $build.children("rate").text()
        };
    })
    .toArray();

// 因为表格显示的样式是转置后的,所以这里按列标题(作为行)来转置
const rotate = ["date", "buildnum", "rate"].map(name => {
    return data.map(m => m[name]);
});

// 生成行 jQuery 对象(包含单元格)
const rows = rotate.map(row => {
    const tds = row.map(v => {
        return $("<td>").text(v || "");
    });
    return $("<tr>").append(tds);
});

// 所有行加入到表格中去
$("table").empty().append(rows);
ringa_lee

在你代码基础上改的,有一些可以优化的地方


<script type="text/javascript">
        $(document).ready(function() {
            $.ajax({
                type: "GET",
                dataType: "xml",
                url: "dist/data/1.xml",
                success: function(xml) {
                  console.log(xml);
                    var dates = ['<tr>'],
                        buildnums = ['<tr>'],
                        rates = ['<tr>'];
                        $(xml).find('build').each(function() {
                            var $student = $(this);
                            var date = $student.find('date').text();
                            var buildnum = $student.find('buildnum').text();
                            var rate = $student.find('rate').text();
                            dates.push('<th>' + date + '</th>');
                            buildnums.push('<td>' + buildnum + '</td>');
                            rates.push('<td>' + rate + '</td>');
                        });
                    dates.push('</tr>');
                    buildnums.push('</tr>');
                    rates.push('</tr>');
                    $("table").html(dates.concat(buildnums, rates).join(''));
                },
            });
        });
    </script>
怪我咯

你这问题真心看不明白。麻烦再说清楚点,愁死我了。

大家讲道理
$(document).ready(function(){
          $.ajax({
              type:"GET",
              dataType:"xml",
              url:"1.xml",
              success:function(xml){
              var htmlData="<table border='1'>";
              var dateTr="";
              var buildnumTr="";
              var rateTr="";
              $(xml).find('build').each(function(index,item){
                var $student = $(this);
                var date = $student.find('date').text();
                var buildnum = $student.find('buildnum').text();
                var rate = $student.find('rate').text();
                dateTr += "<td>"+date+"</td>"; 
                buildnumTr += "<td>"+buildnum+"</td>";
                rateTr += "<td>"+rate+"</td>";
              });

              htmlData+="<tr>"+dateTr+"</tr><tr>"+buildnumTr+"</tr><tr>"+rateTr+"</tr></table>";
              $("body").append(htmlData);
            },
          });
        });
       这样子应该就可以.
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号