我一直工作了一段時間,在C#/ html敏捷包中設置了一個節點,並通過試驗和錯誤我有一個我想要循環的節點列表,從每個節點中獲取每個節點的子節點循環。我想通過索引號來引用它們(似乎是最簡單的,但我在這裏發佈)。我已經嘗試了不同的方式來格式化xpath,包括「[0]」,「/ [0]」,「tr/[0]」等等。以下是我迄今爲止所做的一切工作正常,行:Html敏捷包/ xpath請用[index]幫助選擇子節點?
protected override List<IDataPoint> ReturnDataPointsFromIndividualAddressString(string AddressString)
{
List<IDataPoint> earningsAnnouncements = new List<IDataPoint>();
HtmlWeb hwObject = new HtmlWeb();
HtmlDocument htmlDoc = hwObject.Load(AddressString);
if (htmlDoc.DocumentNode != null)
{
List<HtmlNode> nodeList = new List<HtmlNode>();
var nodes = htmlDoc.DocumentNode.SelectNodes("html[1]/body[1]/table[4]/tr[1]/td[1]/table[1]/tr");
if (nodes != null)
{
foreach (HtmlNode n in nodes)
{
if (n.OuterHtml.Contains("finance.yahoo.com"))
nodeList.Add(n);
}
}
foreach (HtmlNode node in nodeList)
{
EarningsAnnouncementDP earningsAnnouncement = new EarningsAnnouncementDP();
//Error: Expression must evaluate to a node set.
earningsAnnouncement.Company = (node.SelectSingleNode("[0]")).InnerText.ToString();
earningsAnnouncement.Ticker = node.SelectSingleNode("[1]").InnerText.ToString();
earningsAnnouncement.Estimate = node.SelectSingleNode("[2]").InnerText.ToString();
earningsAnnouncement.AnnouncementTime = node.SelectSingleNode("[3]").InnerText.ToString();
earningsAnnouncements.Add(earningsAnnouncement);
}
return earningsAnnouncements;
}
你爲什麼不使用'ChildNodes'屬性來訪問子節點? – Alex 2012-04-06 06:02:18
@Alex這正是我一直在尋找的,謝謝你。 – StatsViaCsh 2012-04-06 21:24:56