需要分析淘宝聊天的历史记录,即要取得 (用户名,时间,内容)   private string GetMsgs(IntPtr hWnd)
        {
            StringBuilder sb = new StringBuilder();          
            HTMLDocument htmlDoc = winAPI.GetHtmlDocument(hWnd); 
        
            IHTMLElementCollection msgs = htmlDoc.getElementsByTagName("DIV");            foreach (IHTMLElement msg in msgs)
            {
                if (msg.id == "MsgElement")
                {
                    sb.AppendLine(msg.innerHTML);
                }  
            }            return sb.ToString();
        } 以上方法为根据取得的聊天窗口句柄,返回HTMLDocument
,以上方法中的 htmlDoc.body.innerHTML 可获得如下内容:
<DIV class=Msg id=MsgElement SendID="cntaobaoautotest3">   <DIV class=MsgHead id=MsgHead><SPAN></SPAN>
<SPAN class=SenderName id=SenderName>autotest3</SPAN><SPAN>&nbsp;</SPAN><SPAN id=SenderSite></SPAN><SPAN id=MsgHeadRight>
<SPAN id=MsgTime>(2010-08-02 11:23:58): </SPAN></SPAN>
  </DIV>   <DIV class=InnerContent id=MsgContent>
<DIV class=MsgHistory id=Msg_{D67154BD-076D-478D-9817-9159AC3C60AA} msgId="{D67154BD-076D-478D-9817-9159AC3C60AA}" sendId="cntaobaoautotest3">
     <FONT style="FONT-SIZE: 10pt" face=宋体 color=#000000>这是信息1</FONT>
</DIV>
   </DIV></DIV>根据(msg.id == "MsgElement")过滤后,得到如下内容:<DIV class=MsgHead id=MsgHead><SPAN></SPAN><SPAN class=SenderName id=SenderName>autotest3</SPAN><SPAN>&nbsp;</SPAN><SPAN id=SenderSite></SPAN><SPAN id=MsgHeadRight><SPAN id=MsgTime>(2010-08-02 11:23:58): </SPAN></SPAN></DIV>
<DIV class=InnerContent id=MsgContent>
<DIV class=MsgHistory id=Msg_{78F1A675-2D97-4D79-A697-E078614F01AC} msgId="{78F1A675-2D97-4D79-A697-E078614F01AC}" sendId="cntaobaoautotest3"><FONT style="FONT-SIZE: 10pt" face=宋体 color=#000000>这是信息1</FONT></DIV></DIV>我的问题就是如何根据msg获取下一级内容(想要得到MsgHead中SenderName等),
我试 msg.document,但并不是想像中的子元素集合。
谢谢!

解决方案 »

  1.   

    不是,是没有方法或属性能获得子Document
      

  2.   

    这样你看行不行foreach (HtmlElement elem in msgs) 
    {
        if (elem.GetAttribute("ID") == "MsgElement") { }
    }
      

  3.   


                foreach (HtmlElement html in msgs) 
                {
                    if (html.GetAttribute("ID") == "MsgHead") 
                    {
                        collection = html.Children;//获取id=MsgHead的子集
                        break;
                    }
                }
                foreach (HtmlElement html in msgs) 
                {
                    if (html.GetAttribute("ID") == "SenderName") //找到SenderName
                    {                }
                }
      

  4.   

    To:a184485789
    是这样的,句柄返回的是mshtml命令空间中的HTMLDocument,
    而不是System.Windows.Forms中的HtmlElement
    即两个是不同的~~