2013-05-01 44 views
1

人,EasyUI - XML数据加载到数据网格

这是张贴在http://www.jeasyui.com/forum/index.php?topic=1144问题的延续。

我想加载一个XML数据(虽然默认情况下easyui消费JSON)。论坛中的例子展示了如何加载xml,如果它是按原样写入的,但不是链接xml文件或URL的方式。

从本质上讲,这个问题是

如何将XML文件加载到一个easyUI DataGrid中

目前 “数据” 被指定为

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> 

在此先感谢。

+0

你有没有找到解决方案? – donlaur 2013-11-26 18:09:04

+0

我没有在easyui中找到。但我在后端编写了一个xml-> json解析器 – diaryfolio 2013-12-10 15:49:14

+0

这是否解决了您的问题?它对我很好。我想,对你来说太迟了,但它可能会帮助其他人。 – donlaur 2013-12-10 16:09:41

回答

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或其​​他手段。