2017-01-16 6 views
2

Ich baue eine Anwendung in Vapor. Meine Website funktioniert gut auf localhost, aber auf dem Heroku läuft nicht richtig. Ich habe eine Liste mit Elementen aus XML. Xml analysiert mit SWXMLHash. Heroku Druck nur statische Kopfzeile. Ich kann keine Informationen über Fehler im Serverprotokoll sehen. Alles muss gut funktionieren, funktioniert aber nicht.Swift Vapor SWXMLHash wahrscheinlich SWXMLHash Fehler

guard let xmlString = response?.body.bytes?.string else { 
    throw Abort.custom(status: .badRequest, message: "Could not retrieve xml string") 
} 

let xml = SWXMLHash.parse(xmlString) 
var cars:[Car] = [] 
for item in xml["findItemsByCategoryResponse"]["searchResult"]["item"].all { 
    cars.append(Car(item:item)) 
    print("1 "+(item["title"].element?.text ?? "")) 

} 

var table:[Node]=[] 
for car in cars { 
    table.append(try ["title": car.title,"url": car.auctionUrl,"price":car.price,"imgUrl":car.galeryUrl].makeNode()) 
} 
var nodeTables = try table.makeNode() 
return try drop.view.make("index", Node(node: ["cars": nodeTables])) 
+0

Normalerweise gibt kein Fehler an, dass die Indizierungslogik falsch ist. Bekommst du irgendwelche Elemente zurück? Zum Beispiel, gibt 'xml [" findItemsByCategoryResponse "]. All.count' irgendetwas zurück oder ist es 0? –

+0

Ich kann 0 sehen. Array ist leer –

+0

Wenn es 0 ist, dann bedeutet das, dass SWXMLHash keine Übereinstimmungen findet. Kannst du den Inhalt von 'xmlString' posten? Oder vielleicht der Anfang davon? –

Antwort

0

Ich war nicht in der Lage SWXMLHash gut funktioniert auf Heroku zu bekommen, so entschied ich mich XML from Zewo stattdessen zu verwenden. Ich gebe zu, dass Zewos XML-Lib nicht so gut zu benutzen ist, ebenso wenig wie die Dokumente im Vergleich zu SWXML Hash, aber es hat nicht viel Arbeit gekostet, um den Wechsel für mich zu machen und funktioniert gut auf Heroku.

+0

Der Unterschied zwischen Zewo und SWXMLHash ist, dass SWXMLHash auf XMLParser von Foundation basiert und Linux noch nicht vollständig unterstützt (siehe https://bugs.swift.org/browse/SR-2301). Zewo verwendet eine Bibliothek der unteren Ebene namens libxml2, die unter Linux arbeitet. –

Verwandte Themen