0

HTML コード:

 <b> CAR </b>
    <br></br>
  Car is something you can drive.
    <br></br>
    <br></br>

C# コード:

        HtmlAgilityPack.HtmlDocument doc = new HtmlWeb().Load("http://website.com/x.html");

        if (doc != null)
        {
            HtmlNode link = doc.DocumentNode.SelectSingleNode("//b[contains(text(), 'CAR')]");

            webBrowser1.DocumentText = link.InnerText;
            webBrowser1.AllowNavigation = true;

            webBrowser1.ScriptErrorsSuppressed = true;
            webBrowser1.Visible = true;
        }

私がなんとか手に入れたもの:CAR

取得する必要があります:
CAR
車は運転できるものです。

助言がありますか?次のノードを追加しようとしましたが、NullReferenceExceptions を与えました: "//b[contains(text(), 'CAR')/br]" および "//b[contains(text(), 'CAR')/br] /br]"

前もって感謝します。PS.Iは正規表現を避けたい..

4

1 に答える 1

0

XPATH は大文字と小文字を区別します (詳細については、こちらを参照してください: Is it possible to ignore case using xpath and c#? ) に加えて、'Car' を含む 2 番目のフレーズは B 要素の子ではありません。次のように動作させることができます。

HtmlDocument doc = new HtmlWeb().Load("http://website.com/x.html");
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'car')]"))
{
    Console.WriteLine(node.InnerText);
}

コンソール アプリケーションでは、次のように出力されます。

 CAR

  Car is something you can drive.
于 2013-05-10T10:01:36.640 に答える