获取两个元素之间的所有html

WSk*_*kid 5 javascript jquery c#-3.0

问题:
提取两个标题之间的所有 html,包括标题 html。标题文本是已知的,但不知道格式、标签名称等。它们不在同一个父级中,并且可能(嗯,几乎可以肯定)在它自己的子级中有子子级)。

澄清一下:标头可以在<h1>or<div>或任何其他标签内。它们也可以被包围<b><i><font>或者更多<div>的标签。关键是:元素中唯一的文本是标题文本。

我可用的工具是:使用 WebBrowser 控件的 C# 3.0 或 Jquery/Js。

我采用了 Jquery 路线,遍历了 DOM,但我遇到了儿童问题并适当地添加了它们。这是到目前为止的代码:

function getAllBetween(firstEl,lastEl) {
    var collection = new Array(); // Collection of Elements
    var fefound =false;
    $('body').find('*').each(function(){
        var curEl = $(this);
        if($(curEl).text() == firstEl) 
            fefound=true;
        if($(curEl).text() == lastEl) 
            return false;

        // need something to add children children
        // otherwise we get <table></table><tbody></tbody><tr></tr> etc
        if (fefound)
            collection.push(curEl);
    });
    var div = document.createElement("DIV");
    for (var i=0,len=collection.length;i<len;i++){
        $(div).append(collection[i]);
    }
    return($(div).html());
}
Run Code Online (Sandbox Code Playgroud)

我应该继续沿着这条路走吗?使用某种递归函数检查/处理子项,还是一种全新的方法更适合?

为了测试,这里有一些示例标记:

<body>
<div>
<div>Start</div>
<table><tbody><tr><td>Oops</td></tr></tbody></table>
</div>
<div>
<div>End</div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议或想法!

dut*_*utt 0

我的想法是正则表达式,类似于

.*<(?<tag>.+)>Start</\1>(?<found_data>.+)<\1>End</\1>.*
Run Code Online (Sandbox Code Playgroud)

应该为您提供开始和结束 div 标签之间的所有内容。