0

HTMLファイルで特定の文字列を検索してからタグを抽出したいと思います。与えられた:

<div_outer><div_inner>Happy birthday<div><div>

HTMLで「お誕生日おめでとう」を検索して、ある種のタグ構造を返す関数を作成したいと思います。これは最も内側のタグであり、これはその外側のタグ<div_inner></div>です<div_outer></div>

何か案は?HTMLAgilityPackを考えていますが、その方法がわかりません。

いつもありがとう、みんな。

4

2 に答える 2

2

HAPは確かにこれに適した場所です。

OuterHtmlのプロパティとParentプロパティを使用してNode、囲んでいる要素とマークアップを取得できます。

于 2012-04-04T19:46:27.067 に答える
1

これにはxpathを使用できます。//*[text()='Happy birthday'][1]/ancestor-or-self::*テキストコンテンツである最初の(簡単にするために)ノードを見つけて、Happy birthdayこのノードのすべての祖先(親、祖父母など)とノード自体を返す式を使用します。

var doc = new HtmlDocument();
doc.LoadHtml("<div_outer><div_inner>Happy birthday<div><div>");

var ancestors = doc.DocumentNode
    .SelectNodes("//*[text()='Happy birthday'][1]/ancestor-or-self::*")
    .Reverse()
    .ToList();

返されるノードの順序は、ドキュメントで見つかったノードの順序のように思われるので、Enumerable.Reverseメソッドを使用して逆にしました。

これにより、2つのノードが返されます:div_innerおよびdiv_outer

于 2012-04-04T21:52:18.110 に答える