我有以下XML结构,我希望在 Tab,Topic,SubTopic和Screen 的基础上动态获取Fields标记值;这可能吗? Plz让我知道适当的解决方案。
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 Strucuter:
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'
}
}
}
});
任何帮助表示赞赏!!
答案 0 :(得分:0)
如果您有权修改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,因为后两种解决方案听起来都很糟糕。此外,我从未试图解决这样的问题,所以我可能会忽略一个更简单的解决方案。
我期待着听到你如何实现这一目标。
祝你好运,布拉德