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.
Sie können [Parsen von XML in JS] (https://api.jquery.com/jQuery.parseXML/). – Lux