2017-01-24 5 views
2

Ich versuche ein Front-End-Web-System zu erstellen, das von einer Drittanbieter-Site-Datenbank und einer Administrationskonsole ausgeführt wird. Die API scheint vollständig auf GET-Aufrufe angewiesen zu sein, indem sie Informationen anfordert oder ändert, indem sie auf bestimmte URLs abzielt.Wie kann XML-API-Inhalt ordnungsgemäß in EmberJS analysiert werden?

Die API gibt XML, Beispiel:

<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> 

ich nicht EmberJs verwendet haben, aber es wurde mir vorgeschlagen. Ich bin mir nicht sicher, es ist möglich, mit XML zu verwenden, so dass ich zur Zeit ein PHP-Skript auf einem anderen lokalen Server ausgeführt wird, die eine feste API URL Endpunkt und zum Umwandeln der Antwort auf JSON ruft:

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

Die JSON Ich beende up mit sieht wie folgt aus:

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 

ich versuche, eine Ember normalizer zu schreiben, die bedeuten, dass ich eine einfache Schleife durch die Elemente (real Begriff ist nicht ITEM) auf einer Ember Vorlage ausgeführt werden können. Derzeit ist es:

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); 
    } 
}); 

An diesem Punkt Ember Inspektor zeigt, dass ich die ID und den Namen unter der Registerkarte Daten immer bin, aber ich kann sie auf meiner Vorlage nicht bekommen, oder offensichtlich mehr als das erste Element abrufen aufgrund zum fest codierten ITEM [0].

Route:

export default Ember.Route.extend({ 
    model() { 
    return this.store.findAll('ITEM'); 
    } 
}); 

Modell:

export default DS.Model.extend({ 
    name: DS.attr('string'), 
}); 

Vorlage:

<strong>{{ model.name }}</strong> 

<ul> 
    {{#each model.ITEM as |one|}} 
    <li>{{one.name}}</li> 
    {{/each}} 
</ul> 

Offensichtlich bin ich nicht so weit entlang und weiß Ember nicht gut aus. Ich bin offen für und möchte mir bessere Lösungen für diesen Sachverhalt sowie technische Beiträge zu meinem derzeitigen Kodex wünschen.

+0

Sie können [Parsen von XML in JS] (https://api.jquery.com/jQuery.parseXML/). – Lux

Antwort

1

Wenn Sie PHP-Skript verwenden, können Sie XML konvertieren, um die Antwort auf PHP-Seite zu korrigieren, warum Serializer dafür verwenden?

Andere Lösung würde neue Adapter und Serializer erstellen, um mit XML-Antworten ohne PHP-Konvertierung zu arbeiten.

Sie auf diesen Link finden können nützlich: https://bendyworks.com/blog/old-new-soap-ember-js

+0

Ich habe lange Zeit nicht mit SOAP gearbeitet, daher ist es in letzter Zeit nicht so nützlich, aber dieser Artikel aus dem Link ist ein Muss, wenn Sie mit WCF und älteren Dingen arbeiten, während Sie einen Client in Ember haben – MilkyWayJoe

Verwandte Themen