我想实现在html中返回某个选定element中xpath,所以使用while进行递归遍历,可是运行到最后一个循环后就死循环了。
代码:
private string GetXpathOfElement(IHTMLElement element)
{
MessageBox.Show("1");
while (element.parentElement != null)
{
MessageBox.Show("2");
IHTMLElement pElement = element.parentElement;
int i = 0;
foreach (IHTMLElement cElement in (IHTMLElementCollection)pElement.children)
{
if (cElement.tagName == element.tagName)
{
if (cElement.Equals(element))
{
elementXpath = string.Format("/{0}[{1}]", cElement.tagName, i.ToString()) + elementXpath;
}
i++;
}
}
MessageBox.Show("3");
GetXpathOfElement(pElement);
MessageBox.Show("4"); }
MessageBox.Show("5");
return "html/"+elementXpath;
}
运行到最后一个循环是 1,5,但是之后又回到了4,然后就是死循环,为什么不是运行到5就跳出函数了呢?
代码:
private string GetXpathOfElement(IHTMLElement element)
{
MessageBox.Show("1");
while (element.parentElement != null)
{
MessageBox.Show("2");
IHTMLElement pElement = element.parentElement;
int i = 0;
foreach (IHTMLElement cElement in (IHTMLElementCollection)pElement.children)
{
if (cElement.tagName == element.tagName)
{
if (cElement.Equals(element))
{
elementXpath = string.Format("/{0}[{1}]", cElement.tagName, i.ToString()) + elementXpath;
}
i++;
}
}
MessageBox.Show("3");
GetXpathOfElement(pElement);
MessageBox.Show("4"); }
MessageBox.Show("5");
return "html/"+elementXpath;
}
运行到最后一个循环是 1,5,但是之后又回到了4,然后就是死循环,为什么不是运行到5就跳出函数了呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货