使用 Agility Pack 阅读非 html 内容

Reading non-html content with AgilityPack

我们正在加载的服务之一是仅使用纯 JSON 对象进行响应。我们正在使用 html 敏捷包加载所有服务,除了这个。其他服务正在渲染一个脚本标签,里面有一个 JSON,它按预期工作。但是当它以非 html 格式出现时,我无法加载此数据。 Loaded document没有元素,Text属性为空字符串,DocumentElement的outer/innerhtml抛出object null异常,innerText为空或null。

我尝试使用 HttpWebRequest 加载这项服务并且它完成了工作,但我不想仅仅因为这项服务而混合使用技术。

是否可以使用 HtmlAgilityPack 加载纯 JSON 数据页?

更新:

原来我误解了问题。

HAP 的核心功能是解析 HTML,而您的问题是下载 HTML(或本例中的 JSON)。 HAP 的 HtmlWeb 仅提供执行此任务的基本功能,因此一旦您发现自己处于 HtmlWeb 不再工作的情况下,您很可能不得不切换到其他工具。这是这种情况的另一个例子:HTML Agility Pack settings


初始答案:

快速测试表明 DocumentElement.InnerText returns JSON 就好了:

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

现场演示:https://dotnetfiddle.net/nPT49L

如果这对您不起作用,请 post 样本 JSON 数据来证明问题。