是否可以从包含类似标签的xml中解析数​​据?

时间:2011-01-11 13:21:17

标签: extjs sencha-touch xml-parsing

我的xml文件是:

  <?xml version="1.0" encoding="UTF-8" ?> 
 <root>
 <investors>
  <investor>Active</investor> 
  <investor>Aggressive</investor> 
  <investor>Conservative</investor> 
  <investor>Day Trader</investor> 
  <investor>Very Active</investor> 
  </investors>
 <events>
  <event>3 Month Expiry</event> 
  <event>LEAPS</event> 
  <event>Monthlies</event> 
  <event>Monthly Expiries</event> 
  <event>Weeklies</event> 
  <event>Weeklies Expiry</event> 
  </events>
 <prices>
  <price>0.05</price> 
  <price>0.5</price> 
  <price>1</price> 
  <price>1</price> 
  <price>22</price> 
  <price>100.34</price> 
  </prices>
  </root>

我的ExtJS代码是:

        Ext.regModel('Card', {
        fields: ['investor','event','price']    
    });

    var store = new Ext.data.Store({
        model: 'Card',
        proxy: {
            type: 'ajax',
            url: 'http:/.../initpicker.php',
            reader: {
                type: 'xml',
                record: 'root'
            }
        },
        listeners: {
            single: true,
            datachanged: function(){
                var items = [];
                store.each(function(r){
                stocks.push({text: '<span style="color:Blue;font-weight:bolder;font-size:30px;">'+ r.get('price') +'</span>'});
                values.push({text: '<span style="font-weight: bold;font-size:25px;">'+ r.get('investor') +'</span>'});
                points.push({text: '<span style="font-weight: bold;font-size:25px;">'+ r.get('event') +'</span>'});
                });
            }
        }    
    });
    store.read();

我的问题是,如果我的xml包含五次相同的标签,我们仍然可以解析数据。 。 。 。 ?

我试过这段代码,但它只解析了第一个..........................

如果有其他方式请建议。 。

谢谢。

3 个答案:

答案 0 :(得分:3)

这实际上取决于你的记录是什么样的。

第一个投资者元素是否应该与第一个事件和价格元素相关并捆绑到一个记录中?第二条记录怎么样 - 包含Aggressive,LEAPS和0.5作为数据值?如果是这样,那么XML实际上并没有多大意义。

我不相信Sencha的XmlReader会很好地应对这一点,这可以解释为什么你只获得第一张唱片。

有两种解决方案:

  1. 修改正在生成的XML以使XmlReader更有意义
  2. 编写您自己的Reader类,以便从您可用的数据格式中解析和提取记录

答案 1 :(得分:0)

您使用此XML的目的是什么?

我假设这是一个网格。此外,您的代码似乎与XML中的标记不匹配。您试图在代码中获取哪些数据?在设置数据对象时,您应该从XML中的标记访问数据。

我建议您重新考虑XML的结构。您的代码不会描述代码中包含的数据。在某些方面,您似乎忽略了XML的重点。

这样的东西应该是填充网格所需的东西。

<investors>
<investor>
    <name>Bob</name>
    <style>Aggressive</style>
    <price>0.5</price>
</investor>
<investor>
    <name>Francis</name>
    <price>150.00</price>
    </investor>
</investors>

我强烈建议您查看以下链接: XML Grid Sample from Sencha Webste

答案 2 :(得分:0)

你可以使用ExtJs解析xml。但是xml文件应该在同一个域中