源代码0001(随机数据的产生-C#与xml)
上一篇 / 下一篇 2008-03-28 22:25:49 / 个人分类:源代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Windows.Forms;
public enum stringtype //产生随机字符串的数据类型
{
allstring = 1,//大小写字母
allnumic = 2,//数字
str_num = 3,//大小写字母+数字
str_upper = 4,//大写字母
str_lower = 5, //小写字母
str_tf = 6,//0和1
}
namespace e2
{
class Program
{
public static int GenForInt(Random ran) //自动生成int型的测试数据
{
int RandKey = ran.Next();
return RandKey;
}
public static float GenForFloat(Random ran) //自动生成float型的测试数据
{
float RandKey = (float)ran.NextDouble();
return RandKey;
}
public static double GenForDouble(Random ran) //自动生成double型的测试数据
{
double RandKey = ran.NextDouble();
return RandKey;
}
public static string GenerateRandom(Random ran,int Length, stringtype s) //自动生成长度为length的字符串型的测试数据
{
string strtemp = "";
string[] constant = null;
switch (s)
{
case stringtype.allnumic:
strtemp = "0,1,2,3,4,5,6,7,8,9";
constant = strtemp.Split(','); //返回strtemp的子字符串
break;
case stringtype.allstring:
strtemp = "a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,D,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,X,Y,Z";
constant = strtemp.Split(',');
break;
case stringtype.str_lower:
strtemp = "a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
constant = strtemp.Split(',');
break;
case stringtype.str_num:
strtemp = "a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,D,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,X,Y,Z,0,1,2,3,4,5,6,7,8,9";
constant = strtemp.Split(',');
break;
case stringtype.str_upper:
strtemp = "A,B,C,E,F,D,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z";
constant = strtemp.Split(',');
break;
case stringtype.str_tf:
strtemp="0,1";
constant = strtemp.Split(',');
break;
}
System.Text.StringBuilder newRandom = new System.Text.StringBuilder(Length);
for (int i = 0; i < Length; i++)
{
newRandom.Append(constant[ran.Next(constant.Length - 1)]); //追加字符
}
return newRandom.ToString();
}
static void Main(string[] args) //主函数
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"E:\experiment\e2\simplegoogle.xml");//导入物理路径下的xml文档
XmlNodeList nodeList = xmlDoc.SelectSingleNode("types").ChildNodes;//获取“types”节点的所有子节点
string elementname;
XmlDocument tcxmldoc;
XmlNode tcxmlnode;
XmlElement tcxmlelem;
tcxmldoc = new XmlDocument();
//加入XML的声明段落
tcxmlnode = tcxmldoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
tcxmldoc.AppendChild(tcxmlnode);
//加入一个根元素
tcxmlelem = tcxmldoc.CreateElement("", "testcases", "");
tcxmldoc.AppendChild(tcxmlelem);
foreach (XmlNode xn in nodeList)//遍历types的所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
elementname = xe.GetAttribute("name");//获得element的name
//加入另外的元素
XmlNode root = tcxmldoc.SelectSingleNode("testcases"); //查找<test cases>
XmlElement xe1 = tcxmldoc.CreateElement(elementname); //创建一个元素节点
int n = 5;
string aa=xe.GetAttribute("type");
string value;
string tcname;
XmlElement xesub;
Random ran = new Random(unchecked((int)DateTime.Now.Ticks)); //生成不重复的随机值,一定要声明在调用函数之外
if (aa.ToString() == "int") //如为int型,则调用GenForInt
{
for (int i = 1; i <= n; i++)
{
tcname = "TC" + i.ToString();
xesub = tcxmldoc.CreateElement(tcname);
value = GenForInt(ran).ToString();
xesub.InnerText = value; //设置文本节点
xe1.AppendChild(xesub); //添加到TCi节点中
root.AppendChild(xe1); //添加到<test cases>节点中
}
}
else if (aa.ToString() == "string") //如为string型,则调用GenerateRandom
{
for (int i = 1; i <= n; i++)
{
tcname = "TC" + i.ToString();
xesub = tcxmldoc.CreateElement(tcname);
value = GenerateRandom(ran,5, stringtype.str_num);
xesub.InnerText = value; //设置文本节点
xe1.AppendChild(xesub); //添加到TCi节点中
root.AppendChild(xe1); //添加到<test cases>节点中
}
}
else if (aa.ToString() == "boolean") //如为boolen型,产生0和1
{
for (int i = 0; i <= 1; i++)
{
tcname = "TC" + i.ToString();
xesub = tcxmldoc.CreateElement(tcname);
xesub.InnerText = i.ToString(); //设置文本节点
xe1.AppendChild(xesub); //添加到TCi节点中
root.AppendChild(xe1); //添加到<test cases>节点中
}
}
else if (aa.ToString() == "float") //如为float,调用GenForFloat
{
for (int i = 0; i <= n; i++)
{
tcname = "TC" + i.ToString();
xesub = tcxmldoc.CreateElement(tcname);
xesub.InnerText = GenForFloat(ran).ToString(); //设置文本节点
xe1.AppendChild(xesub); //添加到TCi节点中
root.AppendChild(xe1); //添加到<test cases>节点中
}
}
else if (aa.ToString() == "double") //如为double,调用GenForDouble
{
for (int i = 0; i <= n; i++)
{
tcname = "TC" + i.ToString();
xesub = tcxmldoc.CreateElement(tcname);
xesub.InnerText = GenForDouble(ran).ToString(); //设置文本节点
xe1.AppendChild(xesub); //添加到TCi节点中
root.AppendChild(xe1); //添加到<test cases>节点中
}
}
tcxmldoc.Save(@"E:\experiment\e2\test cases.xml");
}
}
}
}
相关阅读:
- Surveillant,我写的一个配置管理辅助工具 (陈能技, 2007-10-18)
TAG: 源代码