处理xml或者json格式返回数据之easynet.solr
在easynet.solr中,有两个接口最重要,一个是编解码器接口icodec,一个是solr输出结果解析器接口isolrresponseparser
easynet.solr内置了两个编解码器实现:javabincodec,textcodec。javabincodec对应solr中基于javabin协议,textcodec对应solr中的xml、json等基于文本的协议。相应定义了binarycodecfactory,用于创建javabincodec,textcodecfactory用于创建textcodec。在solrconnection中有个codecfactory的属性,这是
public class example
2 {
3 public string id { get; set; }
4 public string name { get; set; }
5 public ilist
6 public datetime modifieddatetime { get; set; }
7 }
定义exampleobjectdeserialize用于反序列化:
view code
1 public class exampleobjectdeserialize : iobjectdeserialize
2 {
3 public ienumerable
4 {
5 var examples = new list
6
7 foreach (solrdocument doc in result)
8 {
9 examples.add(new example()
10 {
11 id = doc["id"].tostring(),
12 name = doc["name"].tostring(),
13 modifieddatetime = convert.todatetime(doc["last_modified"]),
14 features = (ilist
15 });
16 }
17
18 return examples;
19 }
20 }
处理xml格式返回数据:
view code
1 var codefactory = new textcodecfactory();
2 var con = new solrconnection
3 var objectdeserialize = new exampleobjectdeserialize();
4 var qop = new solrqueryoperations
5 var options = new namevaluecollection();
6
7 options.add(commonparams.start, "0");
8 options.add(commonparams.rows, "10");
9 options.add(highlightparams.highlight, "true");
10 options.add(highlightparams.fields, "name");
11 options.add(commonparams.wt, "xml");
12
13 var response = qop.query(new solrquery("name:terry"), options);
14
15 //解析返回头信息
16 var xmlresponseheaderparser = new xmlresponseheaderparser();
17
18 var responseheader = xmlresponseheaderparser.parser(response);
19
20 //解析高亮
21 var xmlhighlightingparser = new xmlhighlightingparser();
22
23 var highlighting = xmlhighlightingparser.parser(response);
24
25 //解析查询结果
26 var xmlqueryresultsparser = new xmlqueryresultsparser
27
28 var examples = xmlqueryresultsparser.parser(response);
处理json格式返回数据:
view code
1 var codefactory = new textcodecfactory();
2 var con = new solrconnection
3 var objectdeserialize = new exampleobjectdeserialize();
4 var qop = new solrqueryoperations
5 var options = new namevaluecollection();
6
7 options.add(commonparams.start, "0");
8 options.add(commonparams.rows, "10");
9 options.add(highlightparams.highlight, "true");
10 options.add(highlightparams.fields, "name");
11 options.add(commonparams.wt, "json");
12
13 var response = qop.query(new solrquery("name:terry"), options);
14
15 //解析头信息
16 var jsonresponseheaderparser = new jsonresponseheaderparser();
17
18 var responseheader = jsonresponseheaderparser.parser(response);
19
20 //解析高亮
21 var jsonhighlightingparser = new jsonhighlightingparser();
22
23 var highlighting = jsonhighlightingparser.parser(response);
24
25 //解析查询结果
26 var jsonqueryresultsparser = new jsonqueryresultsparser
27
28 var examples = jsonqueryresultsparser.parser(response);
上面的实例处理过程是
1.定义icodecfactory,由于xml、json都是基于文本的,所以我们使用textcodecfactory。
2.创建指定icodecfactory的solr连接isolrconnection。
3. 创建isolrqueryoperations
4.预先定义好的iobjectdeserialize
5.构造查询字符串及查询选项。
6.进行查询,返回结果。
7.对于查询结果,可以用各种实现isolrresponseparser
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级