1

メタデータ スキーマのメタデータ フィールドの型/データ型と共にすべてのフィールドを取得したいと考えています。

機能を実現するために以下のサンプル コードを記述しました。名前、説明などを取得できますが、タイプ/データ タイプのプロパティが見つかりませんでした。どなたか心当たりのある方、おしえてください...

var client = new SessionAwareCoreService2010Client();

client.ClientCredentials.Windows.ClientCredential.UserName = "myUserName";
client.ClientCredentials.Windows.ClientCredential.Password = "myPassword";
client.Open();

if (client.State == System.ServiceModel.CommunicationState.Opened)
{
    var schemaUri = "tcm:1-47-8";
    var fields= client.ReadSchemaFields(schemaUri, true, new ReadOptions());
    var fieldName =   fields.MetadataFields[0].Name;
}
4

2 に答える 2

6

フィールドのタイプを知るには、フィールドの.NETタイプを調べるだけです。私は通常「is」チェックを使用しますが、必要に応じてGetTypeを呼び出すこともできます。

例えば:

var client = new SessionAwareCoreService2010Client();

client.ClientCredentials.Windows.ClientCredential.UserName = "myUserName";
client.ClientCredentials.Windows.ClientCredential.Password = "myPassword";
client.Open();

if (client.State == System.ServiceModel.CommunicationState.Opened)
{
    var schemaUri = "tcm:1-47-8";
    var fields= client.ReadSchemaFields(schemaUri, true, new ReadOptions());
    foreach (var field in fields.MetadataFields)
    {
        if (field is SingleLineTextFieldDefinitionData)
        {
            // Do something specifically for single-line text fields
        }
    }
}
于 2012-08-24T13:22:38.180 に答える
2

このメソッドは、フィールドの定義ReadSchemaFieldsのみを公開します。したがって、基本的には、スキーマでフィールドを定義するときに入力するプロパティのラッパーです。

コンテンツとメタデータは、それぞれ と によって公開されComponentData.ContentますComponentData.Metadata。ただし、これらは XML 文字列として公開されるため、独自に解析する必要があります。

(当然のことながら) そう感じない場合は、次のヘルパー クラスをご覧ください: http://code.google.com/p/tridion-practice/wiki/ChangeContentOrMetadata

この質問に対する私の回答もお読みください: SDL Tridion 2011 でコア サービスを使用してコンポーネントを更新する

于 2012-08-24T12:19:20.530 に答える