[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格式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.