XPath ドキュメント評価メソッド C#

XPath を使用して、XPath 式で定義された基準に一致する特定のノードを見つけることができます。 XPath クエリを使用して、XML または HTML ドキュメントをナビゲートできます。したがって、この記事では、要件に従って特定のノードを選択するために XPath を使用する方法について説明します。

XPath を使用して XML または HTML ファイルからノードを選択する - C# API のインストール

Aspose.HTML for .NET API を使用して、特定のタイプのノードを選択したり、選択したノードから特定の情報を読み取ったりするプロセスを自動化できます。 New Releases ページから DLL ファイルをダウンロードするか、次の NuGet インストール コマンドを使用して、API をすばやく構成できます。

PM> Install-Package Aspose.Html

C# で XPath Document.Evaluate() メソッドを使用して HTML Web ページから画像を取得する

Document.Evaluate() メソッドを使用して、HTML Web ページから画像を取得できます。このプロセスを完了するには、次の手順に従ってください。

  1. HTMLDocument クラスのオブジェクトを初期化して、ソース ファイルを読み込みます。
  2. XPath 式とその他のパラメーターを Evaluate メソッドに渡します。
  3. 選択したノードを繰り返し処理し、各画像のリンクを取得します。

次のコード サンプルは、XPath Document.Evaluate() メソッドを使用して HTML Web ページから画像を取得する方法を示しています。

// HTML ドキュメントのインスタンスを作成する
using (var doc = new Aspose.Html.HTMLDocument(Path.Combine(dataDir, "xpath.htm")))
{
    // XPath 式を評価する
    var result = doc.Evaluate("//main/div[position() mod 2 = 1]//img[@class = 'photo']", doc, doc.CreateNSResolver(doc), Aspose.Html.Dom.XPath.XPathResultType.Any, null);

    // 結果のノードを繰り返し処理し、それらをコンソールに出力します
    Aspose.Html.Dom.Node node;
    while ((node = result.IterateNext()) != null)
    {
        var img = (Aspose.Html.HTMLImageElement)node;
        Console.WriteLine(img.Src);
    }
}

C# で XPath Document.Evaluate() メソッドを使用して XML ファイルからノードを選択する

場合によっては、XML ファイルから特定のノードを選択する必要があります。次の手順では、このような要件を満たす方法について説明します。

  1. HTMLDocument クラスでソース XML ファイルを読み込みます。
  2. XPath 式とその他のパラメーターを渡しながら、Evaluate メソッドを呼び出します。
  3. 選択したノードを繰り返し処理し、選択したノードのコンテンツ全体を出力します。

以下のコード スニペットは、XPath Document.Evaluate メソッドを使用して XML ファイルからノードを選択する方法を示しています。

// ドキュメントのインスタンスを作成する
using (var doc = new Aspose.Html.HTMLDocument(Path.Combine(dataDir, "cars.xml")))
{
    // XPath 式を評価する
    var dealers = doc.Evaluate("//Dealer[descendant::Car[descendant::Model > 2005 and descendant::Price < 25000]]", doc, doc.CreateNSResolver(doc), XPathResultType.Any, null);
    Aspose.Html.Dom.Node dealer;

    // 結果のノードを繰り返し処理し、その内容をコンソールに出力します
    while ((dealer = dealers.IterateNext()) != null)
    {
        Console.WriteLine(dealer.TextContent);
    }
}

XPath Document.Evaluate() メソッドを使用して、C# で選択したノードから特定の情報を取得する

コンテンツ全体ではなく、ノードから特定の詳細を取得する必要がある場合があります。以下の手順に従って、選択したノードから特定の情報を取得するために XPath クエリを使用できます。

  1. HTMLDocument クラスを使用して、入力 XML ファイルにアクセスします。
  2. Evaluate メソッドを呼び出して、XPath 式に一致するノードを取得します。
  3. 一致するノードをループして、各ノードから特定のコンテンツを出力します。

次のコード サンプルは、XPath の Document.Evaluate メソッドを使用して、XML で選択したノードから特定の情報を取得する方法を説明しています。

// ドキュメントのインスタンスを作成する
using (var doc = new Aspose.Html.HTMLDocument(Path.Combine(dataDir, "cars.xml")))
{
    // XPath 式に一致するディーラーを選択
    var dealers = doc.Evaluate("//Dealer[descendant::Car[descendant::Model > 2005 and descendant::Price < 25000]]", doc, doc.CreateNSResolver(doc), XPathResultType.Any, null);
    Aspose.Html.Dom.Node dealer;

    // 選択したディーラーを反復する
    while ((dealer = dealers.IterateNext()) != null)
    {
        // ディーラー名と電話番号を取得して印刷する
        var dealerInfo = doc.Evaluate("concat('Dealer name: ', Name, ' Telephone: ', Telephone)", dealer, doc.CreateNSResolver(doc), XPathResultType.String, null);
        Console.WriteLine(dealerInfo.StringValue);

        // XPath 式に一致する CarID を選択して出力する
        var carIds = doc.Evaluate(".//Car[descendant::Model > 2005 and descendant::Price < 25000]/@CarID", dealer, doc.CreateNSResolver(doc), XPathResultType.Any, null);
        Aspose.Html.Dom.Node carId;

        while ((carId = carIds.IterateNext()) != null)
        {
            Console.WriteLine("Car id: " + carId.TextContent);
        }
    }
}

C# で XPath を使用してノードを選択する - 続きを読む

ドキュメンテーション セクションの次のトピックにアクセスすると、XPath クエリの操作についてさらに詳しく知ることができます。

C# で HTML または XML からノードを選択する XPath クエリ - 無料評価ライセンス

無料の一時ライセンス をリクエストすることで、制限なしに API 機能を最大限にテストすることができます。

結論

この記事では、XPath Query Document.Evaluate メソッドを使用して、XPath 式に一致する特定のノードまたは選択したノードの特定のコンテンツを選択する方法を学習しました。また、ご不明な点がございましたら、無料サポート フォーラム までご連絡ください。

関連項目

C# を使用して HTML で CSS セレクターを使用する