[WebMethod(Description = "学生表、初中成绩表及高中成绩表输出XML格式")]
public XmlDocument xd_GetM_Grade()
{
//学生表信息查询
string MySelectStr_1 = "select Sname, Sage, Ssex from dbo.Student order by Sname";
//初中成绩查询
string MySelectStr_2 = "select Name,Course, Score from dbo.Mid_score m, Student s where m.Name=s.Sname order by s.Sname";
//高中成绩查询
string MySelectStr_3 = "select Name, Course, Score from dbo.High_score h,Student s where h.Name=s.Sname order by s.Sname";
GetSQLData dt1 = new GetSQLData();
GetSQLData dt2 = new GetSQLData();
GetSQLData dt3 = new GetSQLData();
DataSet ds = new DataSet();
//调用获得table的类
ds.Tables.Add(dt1.GetSqlData(MySelectStr_1));
ds.Tables.Add(dt2.GetSqlData(MySelectStr_2));
ds.Tables.Add(dt3.GetSqlData(MySelectStr_3));
#region 创建一个GetSQLData类后,免写
//SqlConnection MyConn = new SqlConnection(ConfigurationManager.AppSettings["testconnStr"]);
//DataTable dt1 = new DataTable();
//DataTable dt2 = new DataTable();
//DataTable dt3 = new DataTable();
//SqlDataAdapter sda = new SqlDataAdapter(MySelectStr_1, MyConn);
//SqlDataAdapter sda2 = new SqlDataAdapter(MySelectStr_2, MyConn);
//SqlDataAdapter sda3 = new SqlDataAdapter(MySelectStr_3, MyConn);
//sda.Fill(dt1);
//sda2.Fill(dt2);
//sda2.Fill(dt3);
//ds.Tables.Add(dt1);
//ds.Tables.Add(dt2);
//ds.Tables.Add(dt3);
#endregion
XmlDocument xd = new XmlDocument();
//加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
XmlDeclaration xmldecl = xd.CreateXmlDeclaration("1.0", "utf-8", null);
xd.AppendChild(xmldecl);
//添加根元素
XmlElement xmle = xd.CreateElement("", "Student", "");
xd.AppendChild(xmle);
//寻找根元素
XmlNode root = xd.SelectSingleNode("Student");
//判断表是否有数据
if (ds.Tables[0].Rows.Count > 0)
{
//读取该表每行信息
for (int nI = 0; nI < ds.Tables[0].Rows.Count; nI++)
{
//添加根元素xmle下的第一层子元素xeRow
XmlElement xeRow = xd.CreateElement("Student");
//读取该表每列信息
for (int nC = 0; nC < ds.Tables[0].Columns.Count; nC++)
{
//判断改列是否为空,若不为空,则写入xml中
if (ds.Tables[0].Rows[nI][nC].ToString() != null && ds.Tables[0].Rows[nI][nC].ToString() != "" && ds.Tables[0].Rows[nI][nC].ToString() != "“" + "”")
{
//添加xeRow的属性及值
xeRow.SetAttribute(ds.Tables[0].Columns[nC].ColumnName.ToString(), ds.Tables[0].Rows[nI][nC].ToString());
root.AppendChild(xeRow);
}
}
#region 第一个子元素初中成绩单
//添加子元素xeRow的子元素xeRow2
XmlElement xeRow2 = xd.CreateElement("初中成绩");
xeRow.AppendChild(xeRow2);
//判断表是否有数据
if (ds.Tables[1].Rows.Count > 0)
{
for (int nI2 = 0; nI2 < ds.Tables[1].Rows.Count; nI2++)
{
//判断该同学是否有成绩,若有则写入xml
if (ds.Tables[1].Rows[nI2][0].ToString().Trim() == ds.Tables[0].Rows[nI][0].ToString().Trim())
{
for (int nC2 = 1; nC2 < ds.Tables[1].Columns.Count; nC2++)
{
XmlElement xeRow2_1 = xd.CreateElement(ds.Tables[1].Columns[nC2].ColumnName.ToString());
xeRow2_1.InnerText = ds.Tables[1].Rows[nI2][nC2].ToString();
xeRow2.AppendChild(xeRow2_1);
}
}
}
}
//判断是否含有子元素
if (!xeRow2.HasChildNodes)
{
mgs(xeRow2);
}
#endregion
#region 第二个子元素高中成绩单
//添加子元素xeRow的子元素xeRow3
XmlElement xeRow3 = xd.CreateElement("高中成绩");
xeRow.AppendChild(xeRow3);
//判断表是否有数据
if (ds.Tables[2].Rows.Count > 0)
{
for (int nI2 = 0; nI2 < ds.Tables[2].Rows.Count; nI2++)
{
//判断该同学是否有成绩,若有则写入xml
if (ds.Tables[2].Rows[nI2][0].ToString().Trim() == ds.Tables[0].Rows[nI][0].ToString().Trim())
{
for (int nC2 = 1; nC2 < ds.Tables[2].Columns.Count; nC2++)
{
XmlElement xeRow3_1 = xd.CreateElement(ds.Tables[2].Columns[nC2].ColumnName.ToString());
xeRow3_1.InnerText = ds.Tables[2].Rows[nI2][nC2].ToString();
xeRow3.AppendChild(xeRow3_1);
}
}
}
}
if (!xeRow3.HasChildNodes)
{
mgs(xeRow3);
}
#endregion
}
}
xd.AppendChild(xmle);
return xd;
}
//返回字符串"该同学无***成绩"
public string mgs(XmlElement xe)
{
return xe.InnerText = "该同学无"+xe.Name;
}
多表数据(学生表、初中成绩表及高中成绩表)输出XML格式
最新推荐文章于 2022-04-28 15:07:34 发布