第一次做采集Json的还简单一些但是XML的简直了.........

JSON

 //采集数据
public string GetBetRecordToRepository()//随便你返回什么
{
try
{
DateTime startTime = DateTime.Now;
var Date = startTime; //日期中的时间段
string playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间,设置时间格式
Date = Date.AddMinutes(-);//时间间隔,有什么比限制15分钟采集一次,调试的时候返回空更丧的呢!!
string endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间
int k = ;//因为我是15分钟采集,所以设置变量确定时间
for (int j = ; j < Time;)//Time是采集时间比如为48,那就是采集当前时间到昨天的当前时间
{
k += ;
if (k == )//一小时
{
j += ;
k = ;
}
// //日期
// var Date = DateTime.Now.AddHours(Time); //打注释的是另一种方法使用do{}while()循环,注意我在写这个的时候为了区分所以do是从当前时间往回采集所以使用do应改为-15 //var NowDate = DateTime.Now;
////日期中的时间段
//string playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间
//Date = Date.AddMinutes(15);
//string endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间
//do
//{
//设置路径获取值
string PostUrl = "采集路径";
string JsonStr = "采集参数";
string retData = string.Empty;
retData = UtilsHelper.HttpWebRequest(PostUrl, JsonStr, Encoding.UTF8, contentType: "application/json", method: "POST");//请求服务器,详细请看我另一篇(.NET接入接口) //判断返回值是否为空 if (retData != "[]")//判断根据自己的判断
                     {
//实例化表 string Sql = string.Empty;
string St = retData.ToString();
var C = from c in St
where
c == '}'
select c;
int Count = C.Count();//获取返回Json个数
string S = retData;
int index1, index2;//记录Json开始和结束位置
string Str;
//循环取值
for (int i = ; i < Count; i++)
{
index1 = S.IndexOf("{");
index2 = S.IndexOf("}");
Str = S.Substring(index1, index2 - i);
S = S.Replace(Str, "");
JObject jo = (JObject)JsonConvert.DeserializeObject(Str);//将返回的字符串转换为Jaon格式
Table Bmodel = new Table();//实例化一个表
                    Bmodel.id=Convert.toInt32(jo["id"].tostring()); Bmodel.username = jo["name"].ToString();
                   ............................................
//生成SQl语句,查看是否已经有该数据
Sql = "select count(*) from Table where ID='" + Bmodel.id + "'";
if (Convert.ToInt32(DbHelperSQL.GetSingle(Sql)) == )
{
Sql = "INSERT INTO Table(ID,username,....." +
"VALUES("+Bmodel.id+",'"+Bmodel.username+"',......)";//注意将值的类型与数据库对应
}
else
{
Sql = "UPDATE AGBetOrder SET username='" + Bmodel.username + "',...... where ID=" + Bmodel.id ;
} //执行SQl语句
DbHelperSQL.ExecuteSql(Sql);
}
}
//重新获取日期中的下一个时间段
playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间
Date = Date.AddMinutes(-);
endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间 //} while (Date < NowDate);
//return MSMPRetMsgFactory.SucceedMsg();
}
}
catch (Exception ex)
{
LogHelper.WriteErrorLog(ex);//抓取错误
return "NO";
}
return "OK";
}

XML  1 public string GetBetRecordToRepository  2 {  3 try

             {
DateTime startTime = DateTime.Now;//当前时间
for (int i = ; i < Time; i += )//时间段
{
startTime = startTime.AddHours(-);
DateTime endTime = startTime.AddHours(); string url = "采集地址";
string retData = UtilsHelper.HttpWebRequest(url, null, Encoding.UTF8);
              XmlDocument a = new XmlDocument();
a.LoadXml(retData);
XmlNode inputNode;
string SQL_base;
string Str = retData;
string r = Str.Replace("normal_wager_", "");
int count = ((Str.Length - r.Length) / ) / ; if (retData.IndexOf("success") > )
{
//创建一个实体类
STable Smodel = new STable();
//创建一个XmlDocument类型数据
XmlDocument XmlD = new XmlDocument();
XmlD.LoadXml(retData);
inputNode = XmlD.SelectSingleNode("success");
//获取节点,将节点转换为元素,便于得到节点的属性值
XmlNodeList XnA = inputNode.ChildNodes;//1
XmlNodeList XnB = XnA.Item().ChildNodes;
//取值放入实体类
Smodel.request_tid = Convert.ToInt32(XnB.Item().InnerText);//搜索起点
Smodel.latest_tid = XnB.Item().InnerText;//搜索起点
//获取节点,将节点转换为元素,便于得到节点的属性值
XnB = XnA.Item().ChildNodes;
XmlNodeList XnC = XnB.Item().ChildNodes;//3.1
//取值放入实体类
Smodel.normal_parlay = XnC.Item().InnerText;//普通注单/过关注单
for (int j = ; j <= count; j++)
{
XnB = XnA.Item().ChildNodes;
//取值放入实体类
Smodel.total_wager = Convert.ToInt32(XnB.Item().InnerText) + j - ;//注单总数 //创建一个实体类
STable Smodel2 = new STable(); //获取节点,将节点转换为元素,便于得到节点的属性值
XmlNodeList XnD = XnC.Item(j).ChildNodes;//3.2
//取值放入实体类
Smodel2.play_type = XnD.Item().InnerText;//游戏编号
                    .......................................................
//生成Sql语句
SQL_base = "SELECT COUNT(*) from STable WHERE transactionid='" + Smodel2.transactionid + "'";//查询是否已经有这一条记录
if (Convert.ToInt32(DbHelperSQL.GetSingle(SQL_base)) == )
SQL_base = "UPDATE STable set request_tid=" + Smodel.request_tid + ",.............";
else
SQL_base = "insert into STable(................)VALUES(............)"; //执行SQl语句
DbHelperSQL.ExecuteSql(SQL_base);
}
}
}
}
catch (Exception err)
{
LogHelper.WriteErrorLog(err);
}
return MSMPRetMsgFactory.SucceedMsg();
}

PS:Json呢是直接就键值对取值,XML呢要一层一层的分开取值,绕得晕乎乎的,小菜一只,请多多指教

.NET采集数据,放入数据库总结的更多相关文章

  1. php批量上传图片并把图片名放入数据库

    前几天工作中要做这样一个功能,有八百多个系统 生成的会员:给这八百多个系统会员上传图片:然后把图片名放入数据库. 第一步: 第一步肯定是首先把图片上传到对应的图片目录下,直接用框架中已经有的上传类: ...

  2. C语言:把分数最低的学生数据放入数组b所指的数组中,-从键盘输入若干字符串,写入文件myfile4中,用-1作字符输入结束的标志,

    //学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,fun函数:把分数最低的学生数据放入数组b所指的数组中,分数最低的学生可能不止一个.人数返回. #include <st ...

  3. java 实现每次从list中取5000条数据放入新list

    从list中取固定条数的数据放入新的list里 public static <T> List<List<T>> split(List<T> resLis ...

  4. 如何将数据放入下拉框List值

    最近在做下拉框,里面放入值大概有这几种 //仓库业务类型 第一种 model.addAttribute("warehouseBizTypeList", basePropertySe ...

  5. 将Oracle中的数据放入elasticsearch

    package com.c4c.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Res ...

  6. 怎么样把ModelMap里面的数据放入Session里面?

    答:可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key.

  7. 0402数据放入集合进行查询-Java(新手)

    JDBC工具类: package cn.Wuchang.zyDome; import java.sql.*; public class JDBCUtils { private static final ...

  8. datatable把一个LIst的数据放入两个colum防止窜行的做法

    DataColumn objectOne = new DataColumn("objectOne", typeof(object)); dt.Columns.Add(objectO ...

  9. js数据放入缓存,需要再调用

    再贴代码之前先描述下,这个技术应用的场景:一个页面的http请求次数能少点就少,这样大大提高用户体验.所以再一个页面发起一个请求,把所有数据都拿到后储存在缓存里面,你想用的时候再调用出来,这个是非常好 ...

随机推荐

  1. 参加IMWebConf 2017 前端开发者大会是什么体验?

    周六作为特邀讲师之一参加了IMWebConf 2017 前端开发者大会的主题演讲,主题为<WebAssembly:面向未来的web开发技术>.本次大会质量非常高,来自国内外的技术专家带了很 ...

  2. Java 最常用类(前100名)来自一万个开源项目

    大部分的 Java 软件开发都会使用到各种不同的库.近日我们从一万个开源的 Java 项目中进行分析,从中提取出最常用的 Java 类,这些类有来自于 Java 的标准库,也有第三方库.每个类在同一个 ...

  3. 二分求最长上升子序列 二分LIS

    #include <iostream> #include <cstring> #define N 50010 using namespace std; int n; int n ...

  4. Linux入门之常用命令(10)软连接 硬链接

    在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问. ...

  5. Problem 2062 Suneast & Yayamao 二进制(多重背包的理解基础)

                                          Problem 2062 Suneast & Yayamao Accept: 143    Submit: 313T ...

  6. 实例化vue之前赋值html元素导致事件失效

    先实例化Vue对象,再操作其他对象,Vue对象声明时会渲染html容器内的所有元素, 会导致元素事件失效或dom元素重新创建,所以涉及html元素的对象都要在实例化Vue之后执行. 下面是简要的例子, ...

  7. 初识Hibernate之关联映射(二)

    上篇我们介绍了关联映射的几种形式,有单向多对一,单向一对多,还有双向一对多.本篇接着介绍有关关联映射的其他几种映射方式,主要有以下几种: 基于外键的单向一对一关联映射 基于主键的单向一对一关联映射 单 ...

  8. vue2+webpack使用1--初识默认展示页面

    1 从安装好的展示 vue2+webpack项目开始 2 关键目录及文件 3 关系图 4 类比nodejs项目的理解   // src/main.js import Vue from 'vue' // ...

  9. Working with Python subprocess - Shells, Processes, Streams, Pipes, Redirects

    Posted: 2009-04-28 15:20 Tags: Python Note Much of the "What Happens When you Execute a Command ...

  10. HDU4278 Faulty Odometerd

    开始以为是容斥原理,想着做一下,应该是可以用容斥解决的,有空再过来写一下.题解是进制转换,开始没想到,不过很好理解. 如在10进制里: 1254=  (1*10^3 + 2*10^2 + 5* 10^ ...