把Xml转换成DataTable

今天碰到需要把一串客户的文本文件,取出相应的数据显示出来

其实主要操作2步即可

1. 先写一个 转换成DataTable的类 如下 XmlToData.cs

2. 写一个应用的Aspx页面,用GridView1来送显示出来。代码如下所示

 

客户的脚步代码大概如下所示


  
 116.247.79.180
 1331135694300
 1331135694300
 1
 1
   
   
     
  3
  凯迪拉克
  1
 
 
  4 
  别克
  2
 
   


开发代码如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.IO;
using System.Xml;
using System.Text;

public partial class DefaultXml : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //DataTable d = XmlToData.CXmlToDataTable("XMLFile.xml");
        string strXml = GetXmlInfo3();
        DataTable d = XmlToData.CXmlToDatatTable(strXml);        
        int cc = d.Rows.Count;        
        this.GridView1.DataSource = d;
        this.GridView1.DataBind();
    }

    public string GetXmlInfo3()
    {
        StringBuilder str = new StringBuilder();
        str.AppendLine(@"116.247.79.1801331138319691133113831969111888凯迪拉克14别克24别克21");
        int iBegin =  str.ToString().IndexOf(@"");
        int iEnd = str.ToString().IndexOf(@"");
        string temp = str.ToString().Substring(iBegin, iEnd - iBegin+7);
        return temp;

    }

    public string GetXmlInfo2()
    {
        StringBuilder str = new StringBuilder();
        str.AppendLine(@"
    	
		3
		凯迪拉克
		1
	
	
		4	
		别克
		2
	
   ");

        return str.ToString();
    }
}

/// 
/// XML形式的字符串、XML文江转换成DataSet、DataTable格式
/// 2007-08-16
/// 
public class XmlToData
{
    /**/
    /// 
    /// 将Xml内容字符串转换成DataSet对象
    /// 
    /// Xml内容字符串
    /// DataSet对象
    public static DataSet CXmlToDataSet(string xmlStr)
    {
        if (!string.IsNullOrEmpty(xmlStr))
        {
            StringReader StrStream = null;
            XmlTextReader Xmlrdr = null;
            try
            {
                DataSet ds = new DataSet();
                //读取字符串中的信息
                StrStream = new StringReader(xmlStr);
                //获取StrStream中的数据
                Xmlrdr = new XmlTextReader(StrStream);
                //ds获取Xmlrdr中的数据                
                ds.ReadXml(Xmlrdr);
                return ds;
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                //释放资源
                if (Xmlrdr != null)
                {
                    Xmlrdr.Close();
                    StrStream.Close();
                    StrStream.Dispose();
                }
            }
        }
        else
        {
            return null;
        }
    }
    /**/
    /// 
    /// 将Xml字符串转换成DataTable对象
    /// 
    /// Xml字符串
    /// Table表索引
    /// DataTable对象
    public static DataTable CXmlToDatatTable(string xmlStr, int tableIndex)
    {
        return CXmlToDataSet(xmlStr).Tables[tableIndex];
    }
    /**/
    /// 
    /// 将Xml字符串转换成DataTable对象
    /// 
    /// Xml字符串
    /// DataTable对象
    public static DataTable CXmlToDatatTable(string xmlStr)
    {
        return CXmlToDataSet(xmlStr).Tables[0];
    }
    /**/
    /// 
    /// 读取Xml文件信息,并转换成DataSet对象
    /// 
    /// 
    /// DataSet ds = new DataSet();
    /// ds = CXmlFileToDataSet("/XML/upload.xml");
    /// 
    /// Xml文件地址
    /// DataSet对象
    public static DataSet CXmlFileToDataSet(string xmlFilePath)
    {
        if (!string.IsNullOrEmpty(xmlFilePath))
        {
            string path = HttpContext.Current.Server.MapPath(xmlFilePath);
            StringReader StrStream = null;
            XmlTextReader Xmlrdr = null;
            try
            {
                XmlDocument xmldoc = new XmlDocument();
                //根据地址加载Xml文件
                xmldoc.Load(path);
                DataSet ds = new DataSet();
                //读取文件中的字符流
                StrStream = new StringReader(xmldoc.InnerXml);
                //获取StrStream中的数据
                Xmlrdr = new XmlTextReader(StrStream);
                //ds获取Xmlrdr中的数据
                ds.ReadXml(Xmlrdr);
                return ds;
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                //释放资源
                if (Xmlrdr != null)
                {
                    Xmlrdr.Close();
                    StrStream.Close();
                    StrStream.Dispose();
                }
            }
        }
        else
        {
            return null;
        }
    }
    /**/
    /// 
    /// 读取Xml文件信息,并转换成DataTable对象
    /// 
    /// xml文江路径
    /// Table索引
    /// DataTable对象
    public static DataTable CXmlToDataTable(string xmlFilePath, int tableIndex)
    {
        return CXmlFileToDataSet(xmlFilePath).Tables[tableIndex];
    }
    /**/
    /// 
    /// 读取Xml文件信息,并转换成DataTable对象
    /// 
    /// xml文江路径
    /// DataTable对象
    public static DataTable CXmlToDataTable(string xmlFilePath)
    {
        return CXmlFileToDataSet(xmlFilePath).Tables[0];
    }
}


 

你可能感兴趣的:(.Net,C#)