

一、需求
有两个部门,部门A和部门B,部门B需要部门A提供一些数据,而这些数据存放在部 门A的数据库中(这些数据会不定期的更新),要求将这些数据的变更(主要是添加)定期自动从部门A 的数据库导入到部门B的数据库中。注意:部门A的数据库和部门B的数据库不是统一的。
二、分 析
要实现这个功能,最平常的想法就是:从部门A的数据库中获取这些数据,然后将这些数据导 入到部门B的数据库中。下面是对这两个步骤的仔细分析。
1)从部门A的数据库中取得数据
分析:在部门A架设一个网站,这个网站的功能很简单:从部门A的数据库中读取数据,并显示在 页面上。
2)取得网站上的数据,并将这些数据导入到部门B的数据库中
分析:分为以下 几个步骤:
1 ) 要实现自动定期的导入,我们需要设计一个Windows服务定期访问架设在部门A的 网站,并从页面上读取数据。
2)要将这些数据导入到部门B的数据库中,就要将这些数据进行解 析,是指满足部门B的数据库的格式。因为部门A和部门B的数据库是不统一的。
3) 完成上面两部 后, 将解析好的数据导入到部门B的数据库中。
难点:部门A的数据以一种什么样的格式显示在 网站上,才能更好的被读取,解析成部门B所需要的数据呢?这是我想到了XML:将部门A的数据以XML的 格式显示在网站的页面上,部门B获取这些XML,解析XML,最后就能获取这些数据。
综上,要实 现这个功能,我们需要一下三个步骤
1)在部门A架设一网站,将数据以xml的格式显示在网站的 页面上。
2)设计一windows服务,定期访问这个网站,取得xml,在对这个xml进行解析,获得需 要的数据。
3) 将这些数据导入到部门B的数据库中。
三、实现
1)部门A架设一网 站,将数据以xml的格式显示在网站的页面上。
这个网站是非常简单的,一个页面,没有任何业 务逻辑,就是将取出数据,然后拼成xml的格式,显示在页面上。
如何具体实现就不多说了,就 是根据给定的XML的形式,拼字符串,下面是我xml的格式,title是对数据的描述,value的数据的值。
2)设计一windows服务,访问这个网站,读取数据,解析数据。
这一步,主要说下从页面中获取xml,并解析xml。至于如何建windows服务这里就不说了,相信 大家都很熟悉。
1>从页面中获取xml类,看代码:
///
/// 从页面中获得XML文档
///
public class GetXmlDocFromWeb
{///
/// 获得XML文档
///
///
public static XmlDocument LoadXMLDocument(string url)
{
StreamReader streamReader = GetWebContent(url);
XmlDocument xdoc = new XmlDocument();
xdoc.Load(streamReader);
return xdoc;
}
private static StreamReader GetWebContent(string Url)
{
//声明一个HttpWebRequest请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
//设置连接超时时间
request.Timeout = 300000;
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("utf-8");
StreamReader streamReader = new StreamReader(streamReceive, encoding);
return streamReader;
}
}
这个类接收一个url(网站的地址)参数,返回 一个xml文档。