用document.getElementById("gw1").InnerHtml比较好吧

解决方案 »

  1.   

    to songyangaaron:
       这个是js的代码吧?我现在只能用服务器端的代码处理。
      

  2.   

    to akirya:
       有什么解析html的东西吗?最好是官方的,或者应用比较多的。谢谢
      

  3.   

    to yilanwuyu123:
       兄弟,不难就给写个吧,多谢啊
      

  4.   

    获取id是gw1的div内容:
    <div.+gw1[^>]*>[^<>]*(((?'Subdiv'<div[^>]*>)[^<>]*)+((?'-Subdiv'</div>)[^<>]*)+)*(?(Subdiv)(?!))</div>
      

  5.   

    to dk385:
      这个我没有匹配出来,另外Subdiv这么写是不是对层数有限制啊?
      

  6.   


    将字符串转换为 XmlDocument ,然后你就可以随意的操作了 ,无论是嵌套还是什么,都可以实现了string s="<div id=\"nihao\"><div>chxp</div>  </div> ";        string result = ""; System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
    doc.LoadXml(s); System.Xml.XmlNodeList nodeList = doc.ChildNodes; foreach(System.Xml.XmlNode node in nodeList)
    {
    if(node.Attributes["id"].Value == "要匹配的id 的参数")

                                            //id 匹配的值,就是你要获取的XMLNode,从 InnerXml 就可以取到你想要的东西
    result = node.InnerXml;
    }
    }
     
      

  7.   

    没有层数有限制。
    如果你的div里还可能有其它的html标记用这个:
    <div.+gw1[^>]*>[^<>]*(((?'Subdiv' <\w+[^>]*>)[^<>]*)+((?'-Subdiv' </\w+>)[^<>]*)+)*(?(Subdiv)(?!))</div>(?'Subdiv' <div[^>]*>)是说遇到形如<div...>这样的则把捕获的内容标记为Subdiv,并压入堆栈 
    (?'-Subdiv' </div>)则相反,遇到</div>后,把最后压入堆栈Subdiv捕获内容弹出,如堆栈本来为空,则匹配失败。
    (?(Subdiv)(?!))表示匹配完成后,如果堆栈还有标记为Subdiv的内容,则匹配失败。也就是<div...>与</div>的标签个数不一致。
    前面匹配不到可能这里“[^ <>]”多了空格,改为“[^<>]”就可。
      

  8.   

    晕了,一发上去就自动加空格,总之“[^ <>]”这样的,中括号里是没空格的。
      

  9.   

    to lijiangchxp2005:
      我写的这段是符合xhtml的,但是很多页面都是不符合的,而且我的这个实际页面中会有用户编辑的内容,所以不能假定是符合xml的。所以这个方法行不通啊
      

  10.   

    to dk385:
       都用到栈了,我想应该能行了,回头试试。刚才想了一下,写代码来做的话,实际上也是压制。但考虑类似的html出来还会很多,所以打算用HtmlAgility(一个开源的东西,可以加载html并操作,还是不错的,不知道能否经得住考验,呵呵)。不过先谢了,看来正则还是很强大的,我回头要认证研究一下你的这个表达式。
      

  11.   

    里面具体嵌套了多少层,没办法掌握,恐怕正则没法写.因为最后的都是<DIV>.
    高手很多.只是个人意件
      

  12.   

    只要<div>是成对出现的,用正则没什么不可以的,只不过要用到平衡组,能理解的人不多罢了string id = "gw1";   //id可以是变量
    Match m = Regex.Match(str, @"(?<=<div.*?id=""" + id + @"""[^>]*>)((?><div[^>]*>(?<o>)|</div>(?<-o>)|((?!</?div)[\s\S]))*)(?(o)(?!))(?=</div>)", RegexOptions.IgnoreCase);
    if (m.Success)
        MessageBox.Show(m.Value);
      

  13.   


                Match match = Regex.Match(strTest, "(?<=<div\\s+id=\""+id +"\"[^>]*>\\s*)(((?'layer'<div[^>]*>)[^<>]*)+((?'-layer'</div>)[^<>]*)+)*(?(layer)(?!))(?=\\s*</div>)", RegexOptions.IgnoreCase | RegexOptions.Singleline);
    测了一下
    id="gw1";
    match.value=
    <div id="newsFeeder" class="groupItem"> 
                     <div class="itemHeader">aaaa </div> 
                     <div class="itemContent">bbbb </div> 
                 </div> 
                 <div id="news" class="groupItem"> 
                     <div class="itemHeader">cccc </div> 
                     <div class="itemContent">dddd </div> 
                 </div> 
    (id="gw2";)
    match.value=
    <div id="shop" class="groupItem"> 
                     <div class="itemHeader"> 
                        eeee 
                     </div> 
                     <div class="itemContent"> 
                     </div> 
                 </div>