2016-09-13 12 views
0

私は次のコードスニペットを持っています。 Xamarin Sitecore Extensionで提供されるサンプルコードのわずかに変更されたバージョン。ReadItemsRequestWithSitecoreQueryのレスポンスを解析するにはどうすればよいですか?

var requesttwo = ItemWebApiRequestBuilder.ReadItemsRequestWithSitecoreQuery("select * from /sitecore/content/Home//*[@@TemplateName='Article']") 
.AddFieldsToRead(new string[3] { "Title", "Author", "Content" }) 
.AddScope(ScopeType.Self) 
.Build(); 

ScItemsResponse response = null; 
try 
{ 
    // And execute it on a session asynchronously 
    response = await session.ReadItemAsync(requesttwo); 
} 
catch (Exception e) 
{ 
    String error = e.Message; 
} 

「予想通り、私は

ReadItemsRequestWithPath("/sitecore/content/home") 

ReadItemsRequestWithSitecoreQuery("select * from /sitecore/content/Home//*[@@TemplateName='Article']") 

を交換するときには動作しますが、上記のブロックがスロー[サイトコアモバイルSDK]データ、インターネットからの予期しない形式を持っています。 "私はthis questionを見つけました。私はsitecoreクエリが "@"を使用することを認識していますが、以下のスニペットを示唆しているように追加しました。

string format = HttpUtility.HtmlEncode("select * from /sitecore/content/Home//*[@@TemplateName='Article']"); 

答えて

0

私は問題を把握しました。以下のコードは期待通りに機能します。

var requesttwo = ItemWebApiRequestBuilder.ReadItemsRequestWithSitecoreQuery("/sitecore/content/Home//*[@@TemplateName='Article']") 
.AddFieldsToRead(new string[3] { "Title", "Author", "Content" }) 
.Build(); 

ScItemsResponse response = null; 
try 
{ 
    // And execute it on a session asynchronously 
    response = await session.ReadItemAsync(requesttwo); 
} 
catch (Exception e) 
{ 
    String error = e.Message; 
} 

私はちょうど "から*を選択する" を削除する必要がありました。私は、AddFieldsToReadが、 "select *からselect foo bar"というような要求を出している独自のselect文を追加していると思います。クエリからその部分を削除するだけで、適切な応答が得られます。

ヒントはthis documentです。下の例は、完全なクエリではなく、サイトコアのパスのみを示しています。

string query = "/sitecore/media library/images/*"; 

var request = ItemWebApiRequestBuilder.ReadItemsRequestWithSitecoreQuery(query) 
.AddScope(ScopeType.Self) 
.PageNumber(0) 
.ItemsPerPage(2) 
.Build(); 

var response = await this.session.ReadItemAsync(request); 
関連する問題