私はC#/ htmlのアジリティパックでノードを設定してしばらく働いていましたが、試行錯誤を繰り返してループの対象となるノードの一覧が表示され、各ノードの子ノードがループ。私はインデックス#でそれらを参照したいと思います(最も簡単なようですが、私はここに投稿します)。私は "[0]"、 "/ [0]"、 "tr/[0]"など、xpathをフォーマットするさまざまな方法を試してきました。これまで私がこれまで持っていたことは、行:Htmlのagility pack/xpathは[index] helpで子ノードを選択してください。
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
@Alexそれはちょうど私が探していたものです、ありがとうございます。 – StatsViaCsh