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

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

一,效果图

核心代码:

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;
}

xml获取配置DataTable的更多相关文章

  1. struts2 在 Action 或 Interceptor 中获取 web.xml 中配置的 <context-param> 参数 (这是我的第一篇博文,哈哈。)

    最近为了改一个问题,想加一个控制开关,就在web.xml 中配置了一个 <context-param> 参数,并在 Action 或 Interceptor 中获取参数值. 1.在 web ...

  2. 保存配置,获取配置,XML

    private void SaveSOConfig() { //保存配置 Dictionary<string, string> PrintConfigDIC = new Dictionar ...

  3. spring web.xml 难点配置总结

    web.xml web.xml是所有web项目的根源,没有它,任何web项目都启动不了,所以有必要了解相关的配置. ContextLoderListener,ContextLoaderServlet, ...

  4. JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140877.html [正文] 一.ServletConfig:代表当前 ...

  5. web.xml中配置Spring中applicationContext.xml的方式

    2011-11-08 16:29 web.xml中配置Spring中applicationContext.xml的方式 使用web.xml方式加载Spring时,获取Spring applicatio ...

  6. 在MFC程序中使用XML文件配置工具栏

    现在我发现使用Visual Studio的资源编辑器进行编辑资源有着诸多的不便:首先是任何资源的变动一般变动代码,不利于系统维护,其次Visual Studio的资源编辑器的本身的功能有限,也不利于界 ...

  7. 源码跟读,Spring是如何解析和加载xml中配置的beans

    Spring版本基于: 跟踪代码源码基于: https://github.com/deng-cc/KeepLearning commit id:c009ce47bd19e1faf9e07f12086c ...

  8. Spring框架入门之基于xml文件配置bean详解

    关于Spring中基于xml文件配置bean的详细总结(spring 4.1.0) 一.Spring中的依赖注入方式介绍 依赖注入有三种方式 属性注入 构造方法注入 工厂方法注入(很少使用,不推荐,本 ...

  9. springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置

    前面主要是后台代码,spring以及mybatis的整合 下面主要是springmvc用来处理请求转发,展现层的处理 之前所有做到的,完成了后台,业务层和持久层的开发完成了 接下来就是展现层了 有很多 ...

随机推荐

  1. 用mac的chrome浏览器调试Android手机的网页

    一.参考链接 read chrome remote debugging documentation 调出开发者选项 二.设置android 在安卓4.2及更新的版本中,默认情况下,[开发者选项]是隐藏 ...

  2. Django(request和response)

    原文链接: https://blog.csdn.net/weixin_31449201/article/details/81043326 Django中的请求与响应 一.请求request djang ...

  3. android listView 点两下才监听到

    因为 对应的控件设置了 android:focusableInTouchMode="true" 意思是 触摸模式下 点击第一次 是 获得焦点.===

  4. Cdq分治整体二分学习记录

    这点东西前前后后拖了好几个星期才学会……还是自己太菜啊. Cdq分治的思想是:把问题序列分割成左右两个,先单独处理左边,再处理左边对右边的影响,再单独处理右边.这样可以消去数据结构上的一个log,降低 ...

  5. 利用cve-2017-11882的一次渗透测试

    利用工具:https://github.com/Ridter/CVE-2017-11882/ 影响版本: office 2003 office 2007 office 2010 office 2013 ...

  6. FireDAC 下的 Sqlite [11] - 关于批量提交 SQL 命令的测试

    可把下面代码直接贴在空白窗体上, 以快速完成窗体设计: object DBGrid1: TDBGrid Left = 0 Top = 0 Width = 265 Height = 338 Align ...

  7. Amontec JTAGkey (FT2232)

    The JTAGkey is based on the FTDIChip FT2232L, is a USB 2.0 device and is used for: On-Chip Debugging ...

  8. Android 应用程序之间内容分享详解(一)

    一个Andoird应用程序的重要的地方是他们有相互沟通和整合的能力,一个应用程序可以和另一个应用程序交互,接下来我们来看看Android应用之间的内容分享 当你构建Intent的时候,必须要指定Int ...

  9. go标准库DOC与 raft

    http://studygolang.com/static/pkgdoc/index.html https://github.com/avelino/awesome-go#database

  10. dtrace 相关资料

    Here are some DTrace information sources: * [Oracle Wiki](https://wikis.oracle.com/display/DTrace/DT ...