使用 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 数据来证明问题。
我们正在加载的服务之一是仅使用纯 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 数据来证明问题。