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を強調表示するspanタグで検索テキストをラップ置換正規表現を使用してそれを解析しようとしています。だから、結果の強調表示されたテキストは、次のようになりますdivを通じIループは、私はp_123
もp_456
が含まれているため、二回のdiv 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">MyText</span> Again
</div>
</div>
</body>
</html>
問題は、あります。私はp_123
のInnerTextプロパティを選択した場合、それは私だけ返すような方法があります
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);
}
:
<!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>
そして、私はこのようなコードを使用しています:実際の結果はこのようになりますテキスト "MyText Here"?他の部門がなければ?それとももう一つの方法がありますか?