Wie um XML zu Parsen von URL mit Knoten
Ich bin mit Knoten-xml2js um XML zu Parsen. Ich habe Probleme beim Parsen von XML aus einer URL. Ich habe diese verwendet werden, SO beantworten als Modell. Aber wenn ich den code unten, bekomme ich null
als das Ergebnis. Irgendwelche Gedanken auf, was ich falsch mache?
UPDATE: ich habe aktualisiert die url für die xml-Datei zu der eigentlichen Website verwendet.
var eyes = require('eyes');
var https = require('https');
var fs = require('fs');
var xml2js = require('xml2js');
var parser = new xml2js.Parser();
parser.addListener('end', function(result) {
eyes.inspect(result);
console.log('Done.');
});
https.get('https://tsdrapi.uspto.gov/ts/cd/casestatus/sn78787878/info.xml', function(result) {
result.on('data', function (data) {
parser.parseString(data);
});
}).on('error', function(e) {
console.log('Got error: ' + e.message);
});
Sie haben ein Tippfehler, sollte
M Danke für den Hinweis. Ich vergaß zu beheben, die vor dem kopieren/einfügen nach Problemlösungen. Leider bin ich zur-Ruhe-Kommens der Begegnung mit dem gleichen problem beim Zugriff auf die eigentliche Website.
Endpunkt ist wieder erreichbar, meine Antwort funktioniert. Hoffentlich zu Ihrer Zufriedenheit
var https = require('https')
. Nachdem dies zu beheben, es funktioniert für mich.M Danke für den Hinweis. Ich vergaß zu beheben, die vor dem kopieren/einfügen nach Problemlösungen. Leider bin ich zur-Ruhe-Kommens der Begegnung mit dem gleichen problem beim Zugriff auf die eigentliche Website.
Endpunkt ist wieder erreichbar, meine Antwort funktioniert. Hoffentlich zu Ihrer Zufriedenheit
InformationsquelleAutor Ken | 2015-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehe ich nicht xml2js werden können, um xml zu Parsen von seinen Stücken, so müssen wir-Puffer gesamte http-Antwort. Zu tun, die ich verwendet haben global hier, aber es ist besser, etwas zu verwenden, wie
concat-stream
(ich poste irgendwann später).Ich habe dies ausprobiert und es funktioniert für mich:
Nur, wenn die Reaktion endet, senden, dann können wir das analysieren von XML.
xml2js
verwendetsax
zu haben scheint-streaming unterstützen, aber nicht sicher, obxml2js
nutzt es.Ich erstellt habe, kleines Beispiel, verwendet den chunk-für-chunk-parsing (so ähnlich wie dein Beispiel), aber es nicht geben Fehler beim Parsen, da in einem chunk ungültige xml-kommt - deshalb brauchen wir den Puffer gesamte Antwort.
Wenn Ihr xml ist sehr groß, versuchen Sie verschiedene Parser wie
sax
die stream-Unterstützung.Können Sie auch hinzufügen
error
handlerparser
zu können Druckfehler, wenn es trifft auf Sie zu.Concat stream
Mit concat-stream können Sie mehr elegant concat alle
.on('data'...)
Aufrufe:Können Sie
sax
zu können, nicht Puffer gesamte Datei (im Fall, dass Ihre xml-Dateien sind gross), aber es ist mehr low-level jedoch, Rohrleitungen im stream ist sehr ähnlich.Wohl die Datei ist klein genug, und es wird berichtet
.on('data', ...
in einem Stück. Größere Dateien gemeldet werden, mit mehreren chunks. Dies liegt daran, dass tcp ist ein streaming-Protokoll und die zugrunde liegenden Implementierungen geben uns die Stücke, sobald Sie es haben. Details, Wann und wie, und die chunk-Größen sind Fragen der Implementierungen.Ich werde mit einer Reihe von anderen Dateien, die ziemlich groß sind. Beide Beispiele Puffer die gesamte Datei? Ich dachte, dass xml2js nutzten sax. Also ich bin ein wenig verwirrt.
Ja, das tun Sie. Ich empfehle, mit
sax
direkt nutzen zu können, streaming-Unterstützung, daxml2js
nicht nutzen es. Es ist ein geöffnete Problem für den stream unterstützen.res.statusCode >= 200 && res.statusCode < 400
InformationsquelleAutor edin-m
Basierend auf deiner Frage die Lösung sollte so etwas wie dieses.
Beide Optionen sind wie erwartet funktionieren und geben ein gültiges json-Objekt von xml.
Sie können konfigurieren, wie zum Parsen der xml wie beschrieben, in der Lesen.mir xml2js
Native
ASYNC *Ohne die callback-Hölle
InformationsquelleAutor Ferry Kobus
Mit
xml2js
, es ist sehr einfach.InformationsquelleAutor Abdul Manaf
Hey, können Sie die vollständige Erklärung hier: antrikshy.com/blog/fetch-xml-url-convert-to-json-nodejs ich habe gerade im Grunde verändert das Protokoll von http auf https um, um die xml-Daten aus der url die ursprüngliche Frage wurde auf der Grundlage.
alle, die können eingesehen werden unter deinem link ist ein 404 Fehler-Seite mit einigen Prosa über das, was Sie tun könnten, um zu finden, was Sie gesucht haben. Das ist, warum es besser ist, die Dinge zu erklären hier. (Übrigens, die Seite noch existiert (derzeit), versuchen Sie es ohne trailing slash: antrikshy.com/blog/fetch-xml-url-convert-to-json-nodejs)
InformationsquelleAutor Chris