カスタム ドキュメント パーサー

最終更新日: 2010年11月1日

適用対象: SharePoint Foundation 2010

この記事の内容
パーサーの要件
パーサーの関連付け
パーサーの展開

ドキュメントに関連付けられているメタデータを管理することは、Microsoft SharePoint Foundation 2010 にエンタープライズ コンテンツを保存する最も強力な利点の 1 つです。ただし、ドキュメント ライブラリ レベルとドキュメント自体との間でその情報の同期を保持することは難しい問題です。SharePoint Foundation が提供するドキュメント パーサー インフラストラクチャを使用すると、カスタム ドキュメント パーサーを作成してインストールし、ユーザー設定のファイルの種類の解析、ドキュメント ライブラリ レベルで加えられた変更を反映したファイルの更新、またはその逆のドキュメント ライブラリの更新を行うことができます。ユーザー設定のファイルの種類にドキュメント パーサーを使用すると、常に、ドキュメント メタデータを最新に保ち、ドキュメント ライブラリとドキュメント自体の間の同期を取ることができます。

ドキュメント パーサーはカスタム COM オブジェクトです。これは、ISPDocumentParser インターフェイス を実装することによって、SharePoint Foundation に呼び出されると以下の処理を実行します。

  • 特定のファイルの種類のドキュメントからドキュメント プロパティの値を抽出し、それらのプロパティ値をドキュメント ライブラリのプロパティ列に昇格するために SharePoint Foundation に渡します。

  • ドキュメントのプロパティを受け取り、それらのプロパティの値をドキュメント自体に降格します。

  • また、コンテンツ タイプ情報の更新、リンクの検出と修復の実行、サムネイル画像の抽出を行います。

ユーザーは、この機能を使用して、ドキュメント自体でドキュメント プロパティを編集し、ドキュメント ライブラリのプロパティ値が自動的に更新されるようにして、変更した内容を反映することができます。同じように、ユーザーはドキュメント ライブラリ レベルでプロパティ値を更新し、それらの変更内容がドキュメントに自動的に書き込まれるようにすることもできます。

SharePoint Foundation がドキュメント パーサーを起動する方法、パーサーがドキュメント メタデータをプロモーション/デモーションする方法の詳細については、「ドキュメント プロパティの昇格と降格」を参照してください。

パーサーの要件

SharePoint Foundation がカスタム ドキュメント パーサーを使用するには、ドキュメント パーサーは次の条件を満たす必要があります。

  • ドキュメント パーサーは、ISPDocumentParser インターフェイス を実装する COM コンポーネントである。

    詳細については、「ドキュメント パーサー インターフェイスの概要」を参照してください。

  • SharePoint Foundation インストールで、各フロントエンド Web サーバーに COM コンポーネントをインストールおよび登録する。

  • SPWebService クラスの PluggableParsers プロパティで返されたコレクションにドキュメント パーサーを追加することで、ドキュメント パーサーを SharePoint Foundation に登録する (このため、カスタム パーサーは "プラグ可能" と呼ばれることがあります)。

パーサーの関連付け

SharePoint Foundation は、解析対象のドキュメントのファイルの種類に基づいて、起動するドキュメント パーサーを選択します。どのようなファイルの種類も、関連付けることができるドキュメント パーサーは 1 つのみです。ただし、同じドキュメント パーサーを複数の異なるファイルの種類に関連付けることができます。

特定のファイルの種類に関連付けられているパーサーを見つけるには、SPWebService クラスの PluggableParsers プロパティで返されるコレクションを確認します。たとえば、次のコンソール アプリケーションは、ローカル サーバー上のコンテンツ サービスに登録されたプラグ可能なパーサーを列挙し、各ファイル名拡張子および対応するプログラム識別子を出力します。

using System;
using System.Collections.Generic;
using Microsoft.SharePoint.Administration;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            SPWebService service = SPWebService.ContentService;

            Dictionary<string, SPDocumentParser> parsers = service.PluggableParsers;
            Dictionary<string, SPDocumentParser>.KeyCollection keys = parsers.Keys;

            Console.WriteLine("Ext       ProgID");
            Console.WriteLine("---       ------");
            foreach (string key in keys)
            {
                Console.WriteLine("{0, -7}   {1}", parsers[key].FileExtension,  parsers[key].ProgId );
            }
            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
        }
    }
}

カスタム ドキュメント パーサーをファイルの種類に関連付けるには、SPWebService クラスの PluggableParsers プロパティで返されるコレクションにパーサーを追加します。たとえば、次のコンソールアプリケーションは、カスタム ドキュメント パーサーを作成し、ローカル サーバー上のコンテンツ サービス用のプラグ可能なパーサーのコレクションにそのパーサーを追加することで、"txt" 拡張子を持つファイルにパーサーを関連付けます。

using System;
using System.Collections.Generic;
using Microsoft.SharePoint.Administration;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            SPWebService service = SPWebService.ContentService;
            Dictionary<string, SPDocumentParser> parsers = service.PluggableParsers;

            // Create a custom parser.
            string extension = "txt";
            string progID = parsers["docx"].ProgId;
            SPDocumentParser customParser = new SPDocumentParser(progID, extension);

            // Remove any existing parser for the file type.
            if (parsers.ContainsKey(extension))
            {
                parsers.Remove(extension);
                service.Update();
            }

            // Add the new parser for the file type.
            service.PluggableParsers.Add(extension, customParser);
            service.Update();
        }
    }
}
注意注意

SharePoint Foundation 2010 には、いくつかの組み込みドキュメント パーサーが含まれます。組み込みドキュメント パーサーはカスタム パーサーで置き換えることができますが、これは、慎重に検討した上で行う必要があります。特に、HTML ベースのファイルの種類用のパーサーを置き換える場合は注意が必要です。組み込みパーサーの処理が、プラグ可能なパーサー インターフェイスで可能な処理よりも役に立つ場合があります。

パーサーの展開

SharePoint Foundation が必要に応じていつでも指定されたパーサーを呼び出すことができるようにするには、各パーサーの COM コンポーネントを SharePoint Foundation インストール内の各フロントエンド Web サーバーにインストールする必要があります。このため、SharePoint Foundation インストール全体で特定のファイルの種類に対して指定できるパーサーは 1 つだけになります。

ドキュメント パーサー インフラストラクチャには、SharePoint Foundation 機能の一部としてカスタム ドキュメント パーサーをパッケージ化して展開する機能は含まれません。

関連項目

参照

SPDocumentParser

概念

ドキュメント プロパティの昇格と降格

ドキュメントの解析とコンテンツ タイプ

ドキュメント パーサー インターフェイスの概要