我自己有一个小的C#控制台应用程序,它使用System.Xml名称空间和HTMLAgilityPack库,我的程序试图从特定的网页中抓取产品变体信息,但我面临着一个不寻常的问题。我的程序似乎跳过了某个HTML标记?
下面是我下载的HTML代码
<option value="0">Select a size</option>
<option value="5">686 x 1981mm, 35mm Thick: £143.01</option>
<option value="7">762 x 1981mm, 35mm Thick: £143.01</option>
<option value="9">838 x 1981mm, 35mm Thick: £143.01</option>以下是我解析上述HTML的代码
if (vars != null && vars.Count > 0)
{
int loc = 1;
foreach (XmlNode item in vars)
{
// Get the <option> ... </option> contents
string name = item.SelectSingleNode(string.Format("//option[{0}]", loc)).GetInnerTextFromNode();
string value = item.SelectSingleNode(string.Format("//option[{0}]", loc)).GetAttributeFromNode("value");
loc++;
}
}由于某种原因,我的代码跳过了第二个标记,所以我最终得到了3个结果,而不是4个,忽略了它,就好像它不存在一样。有人知道为什么会这样吗?
如果我的描述很糟糕,我道歉!
发布于 2013-12-31 08:58:40
我可以肯定地告诉你,子节点的索引-你用loc索引的东西-是从零开始的。我不确定为什么在没有更多信息的情况下会跳过持续的第二个节点。
但是你有没有尝试过使用loc=0呢?
https://stackoverflow.com/questions/20849798
复制相似问题