1

伙计们,

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

提前致谢。

4

1 回答 1

1

我能够解决这个问题。这需要一些工作和一些从一种格式到另一种格式来回移动的数据。我从 CRUD 数据网格教程版本开始,所以我的答案可能有点不同。我从 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  */
        });
    });

我的示例实际上有读取 (url)、创建 (saveURL)、更新 (updateURL) 和删除 (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 或其他方式。

于 2013-12-03T15:21:26.730 回答