的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,以便我可以做一个“子搜索”?
完全同意Awesomium Answers论坛是毫无意义的,因为Awesomium devs很少回应。你有没有想过[使用JavaScript来使用Awesomium使用匿名JS函数进行解析](http://stackoverflow.com/a/21803284/1995977)? –