2012-04-05 2 views
1

저는 C#/html 민첩성 팩으로 설정된 노드로 잠시 동안 일해 왔습니다. 시행 착오를 통해 루프를 반복 할 노드 목록이 있습니다. 각 노드의 자식 노드를 고리. 나는 그것들을 색인 #으로 언급하고 싶다. (가장 쉬운 것 같지만 여기에 게시한다.) 나는 "[0]", "/ [0]", "tr/[0]"등을 포함하여 xpath를 포맷하는 다른 방법을 시도했다. 여기에 내가 지금까지 가지고있는 것이있다. 줄 :Html 민첩성 팩/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; 
       } 
+1

왜 자식 노드에 액세스 할'ChildNodes' 속성을 사용하지 않는? – Alex

+0

@Alex 그게 내가 찾고있는 것 뿐이니, 고마워. – StatsViaCsh

답변

4

너는 tr 노드까지 이동했습니다. 이제 노드 td에 액세스해야합니다. 따라서 아래와 같이 XPATH을 사용할 수 있습니다.

node.SelectSingleNode("./td[1]").InnerText; 
node.SelectSingleNode("td[1]").InnerText; 

또한 제 td 노드 td[1]하지 td[0]으로 액세스된다.

알렉 스는 다음과 같은 것을 쓸 수 있다고 지적 했으므로 훌륭한 제안입니다.

node.ChildNodes[0].InnerText 

HTH

+0

대단히 감사합니다. – StatsViaCsh