EasyUI - 将XML数据加载到数据网格中

时间:2013-05-01 06:21:41

标签: javascript jquery datagrid xml-parsing jquery-easyui

人,

这是http://www.jeasyui.com/forum/index.php?topic=1144发布的问题的继续。

我正在尝试加载XML数据(虽然默认情况下easyui使用json)。论坛中的示例显示如何按原样加载xml,但不能链接xml文件或URL。

基本上,问题是

如何将XML文件加载到easyUI数据网格

目前“数据”指定为

data: '<root><people><name>name1</name><address>address1</address></people><people><name>name2</name><address>address2</address></people></root>', 

但是可以将数据作为文件或URL

data: '/some/url/input.xml'

以下完整示例。

<table class="easyui-datagrid" title="Load XML Data" style="width:300px;height:200px"       
            data-options="  
            **data: '/some/url/input.xml',**            
            loadFilter: function(xml){
                    var rows = [];
                    $(xml).find('people').each(function(){
                        var p = $(this);
                        var row = {
                            name: p.find('name').text(),
                            address: p.find('address').text()
                        };
                        rows.push(row);
                    });
                    return {total:rows.length,rows:rows};   
                }       
    ">  
    <thead>         
        <tr>            
            <th data-options="field:'name'">Name</th>           
            <th data-options="field:'address'">Address</th>         
        </tr>   
    </thead> 
</table>

提前致谢。

1 个答案:

答案 0 :(得分:1)

我能够解决这个问题。它需要一些工作和一些从一种格式到另一种格式的来回移动数据。我从CRUD datagrid教程版本开始,所以我的答案可能会有所不同。我从CRUD示例开始,从mySQL解决方案转换为使用XML http://www.jeasyui.com/tutorial/app/crud2.php

$(function(){
        $('#dg').edatagrid({
            url: 'get_data.php' /* pulls in the data from a xml file  */
        });
    });

我的示例实际上有read(url),create(saveURL),update(updateURL)和delete(destroyUrl)但是对于这个答案,我只是把url读取数据。

对于我的get_data.php,我将XML文件转换为JSON。我还删除了该XML文件中的根。

if(!$xml = simplexml_load_file("mydata.xml", null, LIBXML_NOCDATA)) {
echo "unable to load file";
}
{
$xmlarray = array();  // create a new array 
    foreach ($xml as $element) {  // loop through the xml file elements
        array_push($xmlarray, $element);  // push the elements on the xml array
    }
}

echo json_encode($xmlarray);  // encode that json without the root xml element

我仍然坚持使用simplexml,但是当你进行删除和更新时,有更简单的方法可以做到这一点。您可以使用DOM或其​​他方式。