2016-02-13 58 views
0

我们正在加载的服务之一是仅响应纯JSON对象。我们正在使用html敏捷包加载所有服务,除此之外。其他服务正在渲染脚本标记,其中包含JSON,并且按预期工作。但是,当它以非html格式显示时,我无法加载这些数据。加载的文档没有元素,Text属性是一个空字符串,DocumentElement的外部/内部html抛出对象为空异常,innerText为空或空。使用AgilityPack读取非html内容

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

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

+0

[如何阅读JavaScript对象与XPath/HtmlAgilityPack](http://stackoverflow.com/questions/17740821/how-to-read-javascript-object-with-xpath-htmlagilitypack) – Eminem

+0

我不想解析对象,我想得到它。我正在使用NewtonsoftJson进行分析,这不是一个问题。 – sasjaq

+0

“由于HTML Agility Pack不会评估HTML的任何内容,因此JavaScript代码应该被视为纯文本。使用SelectSingleNode方法查找一段JavaScript,然后只需抓取InnerHtml即可获取内容“。 – Eminem

回答

1

UPDATE:

原来是我误解了这个问题。

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


最初的回答:

快速测试表明DocumentElement.InnerText返回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

如果这不适合你,请发布s足以证明问题的JSON数据。

+0

阅读字符串作为html来取回字符串没有意义。我的目标是要有这样的刺痛。尝试使用htmlWeb.Load(“http://page.returns.json”); – sasjaq

+0

感谢您的链接,这是它:) – sasjaq