Javascript 如何正确地将XMLAPI内容解析为JS?
我正在尝试构建一个前端web系统,该系统将运行第三方站点数据库和管理控制台。API似乎完全依赖于GET调用,通过特定URL请求或更改信息 API返回XML,例如:Javascript 如何正确地将XMLAPI内容解析为JS?,javascript,ember.js,ember-data,javascript-framework,Javascript,Ember.js,Ember Data,Javascript Framework,我正在尝试构建一个前端web系统,该系统将运行第三方站点数据库和管理控制台。API似乎完全依赖于GET调用,通过特定URL请求或更改信息 API返回XML,例如: <responseITEMs xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ITEMs> <ITEM libraryid="e3712df
<responseITEMs xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ITEMs>
<ITEM libraryid="e3712df592253fcb4" featured="false" releasedate="2017-24-01 00:00:00" code="ABC001" detail="Some text" name="Dummy One" displaytitle="Dummy One" keywords="" id="1fef760bc1d61c8c" status="active" lastupdated="2016-24-01 04:53:28"/>
<ITEM libraryid="e3712df592253fcb4" featured="false" releasedate="2017-24-01 00:00:00" code="ABC003" detail="Some text" name="Dummy Three" displaytitle="Dummy Three" keywords="" id="3e35wba1d9b32a45" status="active" lastupdated="2016-24-01 04:53:15"/>
<ITEM libraryid="e3712df592253fcb4" featured="false" releasedate="2017-24-01 00:00:00" code="ABC002" detail="Some text" name="Dummy Two" displaytitle="Dummy Two" keywords="" id="cca6f0cab9defe80" status="active" lastupdated="2017-24-01 01:57:37"/>
</ITEMs>
</responseITEMs>
我最终得到的JSON如下所示:
ITEMs: {
ITEM: [
{
@attributes: {
libraryid: "e3712df592253fcb4",
featured: "false",
releasedate: "2017-24-01 00:00:00",
code: "ABC001",
detail: "Some text",
name: "Dummy One",
displaytitle: "Dummy One",
keywords: "",
id: "1fef760bc1d61c8c",
status: "active",
trackcount: "0",
lastupdated: "2016-24-01 04:53:28"
}
},
{
@attributes: {..... etc
我正在尝试编写一个余烬规范化器,这意味着我可以在余烬模板上运行一个简单的项目循环(实际术语不是项目)。目前是:
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
normalizeResponse(store, primaryModelClass, payload, id, requestType) {
payload = {
ITEM: {
id: payload.ITEMs.ITEM[0]["@attributes"].id,
type: requestType.modelName,
name: payload.ITEMs.ITEM[0]["@attributes"].name
}
};
return this._super(store, primaryModelClass, payload, id, requestType);
}
});
此时,Ember inspector显示我正在“数据”选项卡下获取ID和名称,但由于硬编码项[0],我无法将它们获取到模板中,或者显然检索到比第一个项更多的项
路线:
export default Ember.Route.extend({
model() {
return this.store.findAll('ITEM');
}
});
型号:
export default DS.Model.extend({
name: DS.attr('string'),
});
模板:
<strong>{{ model.name }}</strong>
<ul>
{{#each model.ITEM as |one|}}
<li>{{one.name}}</li>
{{/each}}
</ul>
{{model.name}
{{{#每个model.ITEM作为|一|}
- {{one.name}
{{/每个}}
很明显,我并没有走得那么远,对恩伯一点也不了解。我愿意并将非常感谢更好的解决方案以及对我当前代码的技术输入。如果您使用的是php脚本,您可以在php端将XML转换为正确的响应,为什么要为此使用序列化程序 另一个解决方案是创建新的适配器和序列化程序,以便在不进行php转换的情况下处理XML响应
您可能会发现此链接很有用:您可以。我已经很久没有使用SOAP了,所以最近它对我没有那么大的用处,但是如果您在Ember中使用WCF和更旧的东西,那么该链接中的那篇文章是必须阅读的
<strong>{{ model.name }}</strong>
<ul>
{{#each model.ITEM as |one|}}
<li>{{one.name}}</li>
{{/each}}
</ul>