Nicht-HTML-Inhalt mit AgilityPack lesen

c# html-agility-pack

Frage

Einer der Dienste, die wir laden, reagiert nur mit reinem JSON-Objekt. Wir laden alle Dienste mit HTML-Agility-Pack, alles außer diesem. Andere Dienste rendern ein Skript-Tag mit einem JSON, und es funktioniert wie erwartet. Aber ich kann diese Daten nicht laden, wenn sie nicht im HTML-Format vorliegen. Loaded Dokument hat keine Elemente, und Text -Eigenschaft ist eine leere Zeichenfolge, DocumentElement äußere / innere HTML löst Objekt Null-Ausnahme, innereText ist leer oder null.

Ich versuche, diesen einen Dienst mit HttpWebRequest zu laden, und es macht den Job, aber ich möchte Technologien nicht nur wegen dieses Dienstes mischen.

Ist es möglich, reine JSON-Datenseite mit HtmlAgilityPack zu laden?

Akzeptierte Antwort

UPDATE:

Es stellte sich heraus, dass ich die Frage falsch verstanden habe.

Die Hauptfunktionalität von HAP ist das Parsen von HTML, während das Problem darin besteht, den HTML-Code (oder in diesem Fall JSON) herunterzuladen. HAP's HtmlWeb nur grundlegende Funktionen zur Durchführung dieser Aufgabe, so dass Sie sehr wahrscheinlich zu anderen Tools wechseln müssen, wenn Sie sich in einer Situation befinden, in der HtmlWeb nicht mehr funktioniert. Dies ist ein weiteres Beispiel für diese Art von Situation: HTML Agility Pack-Einstellungen


Anfangsantwort:

Schnelltest zeigt, dass DocumentElement.InnerText das JSON einfach zurückgibt:

var json = @"{
    identifier: '2051189775',     //PRODUCT ID
    fn: 'Fit- Whiskered Dark Wash Skirt',
    category: ['sale'],
    brand: 'Brand Name',
    price: '22.90',  // this would be the discount price
    amount: '31.80',  // this would be the original price
    currency: 'USD',
    //List can me even more.
};";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(json);

Console.WriteLine(doc.DocumentNode.InnerText);

Live-Demo hier: https://dotnetfiddle.net/nPT49L

Wenn dies nicht für Sie funktioniert, veröffentlichen Sie bitte Beispiel-JSON-Daten, die das Problem veranschaulichen.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum