xml获取配置DataTable

    在CSDN写博客时,经常遇到需要绑定数据源的时候,可是自己从数据库获取数据的函数都是已经封装好了的,这样别人复制你的代码,要想看到结果,还得修改修改,很是麻烦,博客实例,数据源简单点就好,这样别人写你写的实例时,不用新建数据库,或者不用自己整个获取数据源的函数,效率低,我要的是快速看运行结果,实例是否是正确,能够把你的代码复制下来,F5运行就可以直接看到效果。所以我就写了一个通过XML获取配置DataTable.这样以后自己写博客,需要绑定数据源的时候,不同的数据源,修改一下XML就可以了。

下面的实例的所有数据源都是通过xml获取的

一,效果图

xml获取配置DataTable

核心代码:

 

public DataTable getDTXML(string xmlname)

        {

            DataTable result = new DataTable();

            string fileName = HttpContext.Current.Request.PhysicalApplicationPath + "\\Xml\\" + xmlname + ".xml";//xml的物理路径

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(fileName);

            XmlNodeList xWitsTablesList = xmlDoc.SelectNodes("/config");

            foreach (XmlNode xOracleNode in xWitsTablesList)

            {

                foreach (XmlNode node2 in xOracleNode.ChildNodes)

                {

                    if (node2.Name == "Header")

                    {

                        //   //绑定表头

                        foreach (XmlNode node3 in node2.Attributes)

                        {

                            result.Columns.Add(node3.Value);

                        }

                    }

                    else

                    {

                        //数据行

                        int i = 0;//列标志

                        DataRow dr = result.NewRow();

                        foreach (XmlNode node4 in node2.Attributes)

                        {

                            dr[i] = node4.Value.ToString();

                            i++;

                        }

                        result.Rows.Add(dr);

                    }



                }

            }

            return result;

        }

xml示例

 

 

<?xml version="1.0" encoding="utf-8" ?>

<config>

    <Header  col1="班级编号" col2="班级名称" col3="年级" col4="学校" col5="男生" col6="女生"  col7="人数"/>

    <row     col1="11" col2="一(一)班" col3="初一" col4="三峡高级中学" col5="20" col6="30"  col7="50"/>

    <row     col1="12" col2="一(二)班" col3="初一" col4="三峡高级中学" col5="18" col6="12"  col7="30"/>

    <row     col1="13" col2="一(三)班" col3="初一" col4="三峡高级中学" col5="16" col6="26"  col7="42"/>

    <row     col1="14" col2="一(四)班" col3="初一" col4="三峡高级中学" col5="23" col6="17"  col7="40"/>

</config>

 

 


二,下面贴出源码:

  1)表头配置.xml文件:

 

<?xml version="1.0" encoding="utf-8" ?>

<config>

    <Header  col1="班级编号" col2="班级名称" col3="年级" col4="学校" col5="男生" col6="女生"  col7="人数"/>

    <row     col1="11" col2="一(一)班" col3="初一" col4="三峡高级中学" col5="20" col6="30"  col7="50"/>

    <row     col1="12" col2="一(二)班" col3="初一" col4="三峡高级中学" col5="18" col6="12"  col7="30"/>

    <row     col1="13" col2="一(三)班" col3="初一" col4="三峡高级中学" col5="16" col6="26"  col7="42"/>

    <row     col1="14" col2="一(四)班" col3="初一" col4="三峡高级中学" col5="23" col6="17"  col7="40"/>

</config>

 

 

 2)readXml.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="readXml.aspx.cs" Inherits="readXml" %>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

    <link rel="Stylesheet" type="text/css" href="Css/readXml.css" />

</head>

<body>

    <form id="form1" runat="server">

    <div style=" margin-left:30px;"><h2 style="color:Yellow; background-color:Gray;" >通过解析XML获取table</h2></div>



    <div class="gv_one">

       <asp:GridView runat="server" ID="gv_xml" 

            CellPadding="4" Width="500px"  ForeColor="#333333" GridLines="None" >

           <AlternatingRowStyle BackColor="White" />

           <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />

           <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />

           <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />

           <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />

           <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />

           <SortedAscendingCellStyle BackColor="#FDF5AC" />

           <SortedAscendingHeaderStyle BackColor="#4D0000" />

           <SortedDescendingCellStyle BackColor="#FCF6C0" />

           <SortedDescendingHeaderStyle BackColor="#820000" />

       </asp:GridView>

    </div>



    <div class="gv_Two">

       <asp:GridView runat="server" ID="gv_xmlOne" 

            CellPadding="4" Width="500px" ForeColor="#333333" GridLines="None" >

           <AlternatingRowStyle BackColor="White" />

           <EditRowStyle BackColor="#2461BF" />

           <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

           <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />

           <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />

           <RowStyle BackColor="#EFF3FB" />

           <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />

           <SortedAscendingCellStyle BackColor="#F5F7FB" />

           <SortedAscendingHeaderStyle BackColor="#6D95E1" />

           <SortedDescendingCellStyle BackColor="#E9EBEF" />

           <SortedDescendingHeaderStyle BackColor="#4870BE" />

       </asp:GridView>

    </div>

    </form>

</body>

</html>

 

 

 3)readXml.aspx.cs

 

using System;

using System.Collections;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Xml.Linq;

using System.Data;

using System.Data.SqlClient;

using System.Xml;

using System.Data.OleDb;

using IsXMLUtility; 



public partial class readXml : System.Web.UI.Page

{



    XmlHelper xmlHelper = new XmlHelper();

    protected void Page_Load(object sender, EventArgs e)

    {

        InitGV();

    }





    private void InitGV()

    {

        DataTable dt1 = xmlHelper.getDTXML("表头配置");

        gv_xml.DataSource = dt1.DefaultView;

        gv_xml.DataBind();



        dt1 = xmlHelper.getDTXML("表头配置", "N0", 1);

        gv_xmlOne.DataSource = dt1.DefaultView;

        gv_xmlOne.DataBind();

    }







}

 

 

 4) XmlHelper.cs

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data;

using System.Xml;



namespace IsXMLUtility

{



    /// <summary>

    ///XmlHelper 的摘要说明

    /// </summary>

    public class XmlHelper

    {

        public XmlHelper()

        {

            //

            //TODO: 在此处添加构造函数逻辑

            //

        }

        public DataTable getDTXML(string xmlname)

        {

            DataTable result = new DataTable();

            string fileName = HttpContext.Current.Request.PhysicalApplicationPath + "\\Xml\\" + xmlname + ".xml";//xml的物理路径

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(fileName);

            XmlNodeList xWitsTablesList = xmlDoc.SelectNodes("/config");

            foreach (XmlNode xOracleNode in xWitsTablesList)

            {

                foreach (XmlNode node2 in xOracleNode.ChildNodes)

                {

                    if (node2.Name == "Header")

                    {

                        //   //绑定表头

                        foreach (XmlNode node3 in node2.Attributes)

                        {

                            result.Columns.Add(node3.Value);

                        }

                    }

                    else

                    {

                        //数据行

                        int i = 0;//列标志

                        DataRow dr = result.NewRow();

                        foreach (XmlNode node4 in node2.Attributes)

                        {

                            dr[i] = node4.Value.ToString();

                            i++;

                        }

                        result.Rows.Add(dr);

                    }



                }

            }

            return result;

        }



        /// <summary>

        /// 

        /// </summary>

        /// <param name="xmlname">xml名字</param>

        /// <param name="Header">序号列名字</param>

        /// <param name="colsNumber">序号开始编号</param>

        /// <returns></returns>

        public DataTable getDTXML(string xmlname, string Header, int colsNumber)

        {

            DataTable result = new DataTable();

            if (Header == "")

                Header = "N0";

            if (colsNumber < 0)

                colsNumber = 1;

            result.Columns.Add(Header);

            string fileName = HttpContext.Current.Request.PhysicalApplicationPath + "\\Xml\\" + xmlname + ".xml";//xml的物理路径

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(fileName);

            XmlNodeList xWitsTablesList = xmlDoc.SelectNodes("/config");

            foreach (XmlNode xOracleNode in xWitsTablesList)

            {

                foreach (XmlNode node2 in xOracleNode.ChildNodes)

                {

                    if (node2.Name == "Header")

                    {

                        //绑定表头

                        foreach (XmlNode node3 in node2.Attributes)

                        {

                            result.Columns.Add(node3.Value);

                        }

                    }

                    else

                    {

                        //数据行

                        int i = 1;//列标志

                        DataRow dr = result.NewRow();

                        dr[0] = colsNumber;

                        foreach (XmlNode node4 in node2.Attributes)

                        {

                            dr[i] = node4.Value.ToString();

                            i++;

                        }

                        colsNumber++;

                        result.Rows.Add(dr);

                    }



                }

            }

            return result;

        }





    }

}


 5) readXml.css

 

 

body{

margin:0 auto;

padding:0px;

font-family:'宋体';

}

.gv_one

{

    margin-left:30px;

	width:400px;

	height:200px;

	margin-top:20px;

	border:#A8B7CC solid 1px;

	background-color:#FFFFFF;

	overflow: scroll;

	SCROLLBAR-FACE-COLOR:#E0EDFE;

	PADDING-BOTTOM: 0px;

	SCROLLBAR-HIGHLIGHT-COLOR: #ffffff;

	SCROLLBAR-SHADOW-COLOR: #cccccc;

	SCROLLBAR-3DLIGHT-COLOR:#ffffff;

	SCROLLBAR-ARROW-COLOR:#95AFD4;

	PADDING-TOP: 0px;

	SCROLLBAR-TRACK-COLOR: #ffffff;

	SCROLLBAR-DARKSHADOW-COLOR: #ffffff;

	LETTER-SPACING: 1pt;

}

.gv_Two

{

    margin-left:30px;

	width:400px;

	height:200px;

    margin-top:20px;

	border:#A8B7CC solid 1px;

	background-color:#FFFFFF;

	overflow: scroll;

	SCROLLBAR-FACE-COLOR:#E0EDFE;

	PADDING-BOTTOM: 0px;

	SCROLLBAR-HIGHLIGHT-COLOR: #ffffff;

	SCROLLBAR-SHADOW-COLOR: #cccccc;

	SCROLLBAR-3DLIGHT-COLOR:#ffffff;

	SCROLLBAR-ARROW-COLOR:#95AFD4;

	PADDING-TOP: 0px;

	SCROLLBAR-TRACK-COLOR: #ffffff;

	SCROLLBAR-DARKSHADOW-COLOR: #ffffff;

	LETTER-SPACING: 1pt;

}




 


 

 

 





 

你可能感兴趣的:(Datatable)