2014-03-01 51 views
1

的awesomium回答论坛似乎非常死,所以我重新发布这个在这里与Awesomium解析

首先,开始学习Awesomium我用HtmlAgilityPack库为我所有的分析需求前,但图书馆没有被更新,我决定搬到Awesomium。 (所以我的方法是基于我对HAP的经验)

我想出了如何使用Awesomium解析对象列表,但我无法弄清楚如何使用它们。例如:

 public dynamic FindNodes(string xpath, dynamic node = null, WebView wv = null) 
      { 
       if (wv == null) wv = mainView; 
       dynamic nodes = (JSObject)wv.ExecuteJavascriptWithResult(String.Format("document.evaluate(\"{0}\", {1}, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null)", xpath, "document"))); 
       int length = nodes.snapshotLength; 
       for (int i = 0; i < length; i++) 
       { 
        Console.WriteLine(nodes.snapshotItem(i).innerText); 
       } 
       return nodes; 
      } 

问题在我返回节点后开始。我想执行的一系列搜索的每个节点,所以他们回国后,我决定,下面应该工作:

dynamic weakCounters = ap.FindNodes("//div[@id='weaklist']/ul/li"); 
      for (int i = 0; i < weakCounters.snapshotLength; i++) 
      { 
       ap.FindNodes("//h3[@class='black']", weakCounters.snapshotItem(i)); 
      } 

但事实并非如此。我尝试获取列表长度的部分,当然,如果我试图直接获取该项目的快照,我会得到一个错误。

我明白,我在某个地方犯了一个很大的错误。我只是不明白在哪里。

编辑:令人惊讶的,如果我这样做,似乎一切都很好,但它只是看起来不正确的创建一个新的变量,每次我需要访问它(这只是香蕉)

dynamic weakCounters = ap.FindNodes("//div[@id='weaklist']/ul/li"); 
      dynamic nodes = weakCounters; 
      for (int i = 0; i < nodes.snapshotLength; i++) 
      { 

而且,我怎样才能将我已经提取的结果(元素)传递回awesomium,以便我可以做一个“子搜索”?

+0

完全同意Awesomium Answers论坛是毫无意义的,因为Awesomium devs很少回应。你有没有想过[使用JavaScript来使用Awesomium使用匿名JS函数进行解析](http://stackoverflow.com/a/21803284/1995977)? –

回答