gpt4 book ai didi

javascript - 如何将 XML API 内容正确解析为 EmberJS?

转载 作者:行者123 更新时间:2023-11-29 23:55:18 24 4
gpt4 key购买 nike

我正在尝试构建一个前端 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="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>

我以前没有使用过 EmberJs,但有人向我推荐了它。我不确定它是否可以与 XML 一起使用,所以我目前有一个 PHP 脚本在不同的本地服务器上运行,它调用固定的 API URL 端点并将响应转换为 JSON:

$Json = json_encode(simplexml_load_string($data));
echo $Json;

我最终得到的 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

我正在尝试编写一个 Ember 规范器,这意味着我可以在 Ember 模板上运行一个简单的循环遍历项目(实际术语不是 ITEM)。目前是:

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 检查器显示我正在“数据”选项卡下获取 ID 和名称,但我无法将它们添加到我的模板中,或者由于硬编码的 ITEM[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>

显然,我并没有走得太远,对 Ember 也不是很了解。我愿意并希望有更好的解决方案来解决这个问题,以及对我当前代码的技术投入。

最佳答案

如果您使用的是 php 脚本,则可以在 PHP 端将 XML 转换为正确的响应,为什么要为此使用序列化程序?

其他解决方案是创建新的适配器和序列化器来处理 XML 响应而无需 php 转换。

您可能会发现此链接很有用:https://bendyworks.com/blog/old-new-soap-ember-js

关于javascript - 如何将 XML API 内容正确解析为 EmberJS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com