0
說我有一個html文件是這樣的:HtmlAgilityPack C#嵌套的div
<!DOCTYPE html>
<html>
<head>
<title>MyTest</title>
</head>
<body>
<div id="p_123">
MyText Here
<div id="p_456">
MyText Again
</div>
</div>
</body>
</html>
我試圖用一個HtmlAgilityPack更換正則表達式,它包裝在突出的跨度標籤搜索文本解析它。因此,所產生的高亮文本應該是這樣的:
<!DOCTYPE html>
<html>
<head>
<title>MyTest</title>
</head>
<body>
<div id="p_123">
<span class="highlighted">MyText</span> Here
<div id="p_456">
<span class="highlighted">MyText</span> Again
</div>
</div>
</body>
</html>
的問題是,如果通過我的div循環,我結束了突出的DIV p_456
兩次,因爲p_123
還含有p_456
。實際的結果是這樣的:
<!DOCTYPE html>
<html>
<head>
<title>MyTest</title>
</head>
<body>
<div id="p_123">
<span class="highlighted">MyText</span> Here
<div id="p_456">
<span class="highlighted"><span class="highlighted">MyText</span></span> Again
</div>
</div>
</body>
</html>
而且我使用的代碼看起來像這樣:
HtmlDocument doc = new HtmlDocument();
doc.Load(someDataStream);
foreach (HtmlNode n in doc.DocumentNode)
{
string evaluator = m => "<span class=\"highlighted\">" + m.Value + "</span>";
n.InnerText = Regex.Replace(n.InnerText, "MyText", evaluator);
}
有沒有辦法讓我選擇的p_123
的的innerText它只返回我文本「MyText Here」?沒有其他的div?還是有另一種方法來做到這一點?