Ich habe eine Weile mit einem Knoten in C#/HTML Agility Pack arbeiten gearbeitet, und durch Versuch und Irrtum habe ich eine Liste von Knoten, die ich überschleifen möchte, die untergeordneten Knoten jedes der Knoten aus der Schleife. Ich würde gerne auf sie nach Index # verweisen (scheint am einfachsten zu sein, aber hier poste ich). Ich habe verschiedene Wege ausprobiert, um den XPath zu formatieren, darunter "[0]", "/ [0]", "tr/[0]" usw. Hier ist was ich bisher gemacht habe, alles funktioniert bis zum ersten Kommentar Leitung:Html Agility Pack/XPath wählen Kind Knoten von [Index] Hilfe, bitte?
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;
}
Warum Sie nicht verwenden 'ChildNodes' Eigenschaft auf Kinderknoten zugreifen? – Alex
@Alex Das war genau das, was ich gesucht habe, danke auch. – StatsViaCsh