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)
非常感谢任何建议或想法!
我的想法是正则表达式,类似于
.*<(?<tag>.+)>Start</\1>(?<found_data>.+)<\1>End</\1>.*
Run Code Online (Sandbox Code Playgroud)
应该为您提供开始和结束 div 标签之间的所有内容。
| 归档时间: |
|
| 查看次数: |
1905 次 |
| 最近记录: |