Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动态地将JSON对象转换为表行_Java_Javascript_Jquery_Xml_Json - Fatal编程技术网

Java 动态地将JSON对象转换为表行

Java 动态地将JSON对象转换为表行,java,javascript,jquery,xml,json,Java,Javascript,Jquery,Xml,Json,我现在正在处理API调用,所以大多数请求都是通过ajax调用完成的。正如您所期望的,发送到服务器的数据和从服务器接收到的数据都将是xml数据。我已经成功地在注册过程中和post请求过程中动态构建了xml数据。通过使用JaxB,我已经在服务器中完成了必要的步骤 现在,如果用户需要查看特定的资源,我必须从服务器获取xml格式的数据。和前面一样,我使用jaxb将Java对象转换为xml数据,并在Javascript的success函数中获取xml数据。关于将xml数据转换为用户可查看的形式,有很多示例

我现在正在处理API调用,所以大多数请求都是通过ajax调用完成的。正如您所期望的,发送到服务器的数据和从服务器接收到的数据都将是xml数据。我已经成功地在注册过程中和post请求过程中动态构建了xml数据。通过使用JaxB,我已经在服务器中完成了必要的步骤

现在,如果用户需要查看特定的资源,我必须从服务器获取xml格式的数据。和前面一样,我使用jaxb将Java对象转换为xml数据,并在Javascript的success函数中获取xml数据。关于将xml数据转换为用户可查看的形式,有很多示例和问题

我的主要目标是使每个函数都动态,现在我要把用户列表显示给管理员,我可以用这些例子把XML数据转换成表。

如果这样做,我必须手动编写相同的流程,并根据每个列表视图的表字段进行一些修改。如果我要复制粘贴相同的代码,并对10个列表视图进行一些修改,这是一个糟糕的做法。我希望将xml到表的转换作为任意数量表的通用函数,而不管其中有多少字段

我从服务器获取xml数据作为字符串。因此,我使用以下代码将其转换为可识别的xmlData

var xmlData = jQuery.parseXML(data);    //data is the xml String which I'm getting from server

//Converting xmlData into JSON Objects
var containerTag = myTag    //I can get this from - document.getElementById("tableId").name
var output = new Array( );  
var rawData = xmlData.getElementsByTagName(containerTag)[0];
var i, j, oneRecord, oneObject;
for (i = 0; i < rawData.childNodes.length; i++) {
    if (rawData.childNodes[i].nodeType == 1) {
        oneRecord = rawData.childNodes[i];
        oneObject = output[output.length] = new Object( );
        for (j = 0; j < oneRecord.childNodes.length; j++) {
            if (oneRecord.childNodes[j].nodeType == 1) {
            oneObject[oneRecord.childNodes[j].tagName] = oneRecord.childNodes[j].firstChild.nodeValue;    
            }
        }
    }
}
等等,这不是我所期望的。我已经学习Javascript好几天了,但是我不知道如何使这个过程对所有表通用,而不管是否有文件

注意:我使用的是jquery数据表

我脑子里突然有个念头。是否可以将Json对象赋予jquery datatables,然后它将完成剩余的过程

作为参考,这是我的xml数据

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Users>
    <user>
        <id>1</id>
        <username>user1</username>
        <email>email1</email>
        <status>active</status>
    </user>
    <user>
        <id>2</id>
        <username>user2</username>
        <email>email2</email>
        <status>active</status>
    </user>
    <user>
        <id>3</id>
        <username>user3</username>
        <email>email3</email>
        <status>inactive</status>
    </user>
</Users>

正如@epascarello所说的,唯一更干净的方法是基于输出数组索引创建tr,基于输出[i]-json的键创建td。使用jquery的示例应该如下所示

var table = $('<table></table>');
for(var i=0; i < output.length; i++) {
   var tr = $('<tr></tr>');
   for(var key in output[i]) {
     var td = $('<td></td>');
     td.attr('class', key);
     td.text(output[i][key]);
     tr.append(td);
   }
   table.append(tr);
}
$('body').append(table);
var表=$('');
对于(变量i=0;i

这里的例子:

你甚至可以试试这个

var output = [{id: 1, name: 'Alex', phone: '000'}, {id: 2, name: 'Paul', phone: '010'}];

var stBldr='';
stBldr+='<table border=1>';
$.each(output,function(i,v){
stBldr+='<tr>';
stBldr+='<td>'+$(v)[0].id+'</td><td>'+$(v)[0].name+'</td><td>'+$(v)[0].phone+'</td>';
stBldr+='</tr>';
});
stBldr+='</table>';

var str=$(stBldr);
$('body').append(str);
var-output=[{id:1,name'Alex',phone'000'},{id:2,name'Paul',phone'010'}];
var stBldr='';
stBldr+='';
$。每个(输出、功能(i、v){
stBldr+='';
stBldr+=''+$(v)[0]。id+''+$(v)[0]。姓名+''+$(v)[0]。电话+'';
stBldr+='';
});
stBldr+='';
var str=$(stBldr);
$('body')。追加(str);

通过JSON循环。用表行和tds构建一个字符串,并将其附加到表中。这是一个很好的示例,但是如果我决定在每一行中添加一个名为“action”的列(不是在每一行的末尾,而是在每一行的中间),例如,我想在每一行的“action”列中放置edit and delete按钮。。在这种情况下,我怀疑我是否应该对每一个都使用。经过一点编辑,你会得到这样的结果:将你创建的td放入一个tds数组中,然后在一个位置上使用拼接方法(在你的例子中是计算的或硬编码的)tds。拼接(位置,0,你的DefaultTDElement)。在tds数组上迭代,然后在tr中插入元素,就完成了。请看上面的例子。非常感谢你的粉丝。这就是我需要的。这不是手动创建整个表,而是一种更简单的方法。我修改了您的示例代码以满足我的需要,但我使用的是jquery datatables。我已经。。。。。。在html页面中硬编码。我只需要在下面添加。。我已经从html中完全删除了js结果,并尝试将js结果作为$('table')追加到表中;行被追加,但问题是,这是一个jquery datatables,在上面有一行显示为表中没有可用数据。我正在尝试各种可能性,如果你知道如何解决这个问题,请帮助我。。
var table = $('<table></table>');
for(var i=0; i < output.length; i++) {
   var tr = $('<tr></tr>');
   for(var key in output[i]) {
     var td = $('<td></td>');
     td.attr('class', key);
     td.text(output[i][key]);
     tr.append(td);
   }
   table.append(tr);
}
$('body').append(table);
var output = [{id: 1, name: 'Alex', phone: '000'}, {id: 2, name: 'Paul', phone: '010'}];

var stBldr='';
stBldr+='<table border=1>';
$.each(output,function(i,v){
stBldr+='<tr>';
stBldr+='<td>'+$(v)[0].id+'</td><td>'+$(v)[0].name+'</td><td>'+$(v)[0].phone+'</td>';
stBldr+='</tr>';
});
stBldr+='</table>';

var str=$(stBldr);
$('body').append(str);