Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确地将XMLAPI内容解析为JS?_Javascript_Ember.js_Ember Data_Javascript Framework - Fatal编程技术网

Javascript 如何正确地将XMLAPI内容解析为JS?

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

我正在尝试构建一个前端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>
我最终得到的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>