【问题标题】:How to get particular node value from XML Store in Sencha Touch如何从 Sencha Touch 中的 XML 存储中获取特定节点值
【发布时间】:2013-07-22 12:16:22
【问题描述】:

我有以下 XML 结构,我想根据 Tab、Topic、SubTopic 和 Screen 动态获取 Fields 标签值;这可能吗?请让我知道适当的解决方案。

XML 结构:

<?xml version="1.0" encoding="utf-8"?>
<Settings>
<ABC TYPE="Tab">
<Trans TYPE="Topic">
  <Rpt TYPE="SubTopic">
    <File TYPE="Screen">
      <Fields>
        <Tin>10</Tin>
        <Pin>8</Pin>
      </Fields>
    </File>
  </Rpt>
</Trans>
</ABC>
<XYZ TYPE="Tab">
<Trans TYPE="Topic">
  <Rpt TYPE="SubTopic">
    <File TYPE="Screen">
      <Fields>
        <Tin>10</Tin>
        <Pin>8</Pin>
      </Fields>
    </File>
  </Rpt>
</Trans>
  </XYZ>
 </Settings>

模型结构:

Ext.define('MyApp.model.ScreenValidation', {
    extend: 'Ext.data.Model',

    config: {
        fields: [
            {
                name: 'Tin',
                type: 'string'
            },
            {
                name: 'Pin',
                type: 'string'
            }
        ]
    }
});

XMLStore 结构器:

    Ext.define('MyApp.store.ScreenValidation', {
    extend: 'Ext.data.Store',

    requires: [
        'MyApp.model.ScreenValidation'
    ],

    config: {
        autoLoad: true,
        model: 'MyApp.model.ScreenValidation',
        storeId: 'ScreenValidation',
        proxy: {
            type: 'ajax',
            url: 'ScreenValidation.xml',
            reader: {
                type: 'xml',
                record: 'Fields'
            }
        }
    }
});

感谢任何帮助!

【问题讨论】:

    标签: xml-parsing sencha-touch sencha-touch-2 sencha-architect


    【解决方案1】:

    如果您有权修改 xml 结构,我建议您这样做。

    <?xml version="1.0" encoding="utf-8"?>
    <Settings>
      <Setting>
        <type>Tab</type>
        <transType>Topic</transType>
        <rptType>SubTopic</rptType>
        <fileType>Screen</fileType>
        <Fields>
          <Tin>10</Tin>
          <Pin>8</Pin>
          </Fields>
        </File>
      </Setting>
    
      ....ETC
    </Settings
    

    如果您无权访问 api 以便您可以更改格式,我认为您也会被卡住:

    1:使用标准 ajax 请求获取 xml 响应,然后手动解析 xml 结果或使用库,然后手动填充 MyApp.model.ScreenValidation 对象。

    2:扩展/覆盖Ext.data.reader.Xml 类并使其解析出您想要的信息到您的模型中。

    我希望您可以访问 api,因为后两种解决方案听起来都很糟糕。另外,我从来没有尝试过解决这样的问题,所以我可能忽略了一个更简单的解决方案。

    我期待听到您如何使这项工作发挥作用。

    祝你好运,布拉德

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 2018-07-30
      相关资源
      最近更新 更多