ASP.net Xml: DataSet的ReadXml(), WriteXml()和Response写Xml文档

简介:

 专题图ylbtech-asp.net-logo编号:ylbtechASPnetXml100010011

1,功能描述

   这是一个基于.net操作Xml的案例示例,共有两个示例。

ylb_menu:1, DemoReadXml (DataSet的ReadXml())

ylb_menu:2, DemoWriteXml(DataSet的WriteXml()和Response写Xml文档)

 

2,技术与环境

操作系统:

windows

开发语言:

C#

开发框架:

 

数据库:

开发软件:

Microsoft Visual Studio 2010

开发技术:

 ASP.net+Xml

课程总策划:

yuanbo

成员:

null

个人主页:

http://www.cnblogs.com/ylbtech/

科研团队:

ylbtech

教研团队:

ylbtech

 

3,ylb_menu:1, DemoReadXml ylb_tip:读Xml文档
 
3_1,/Vote.xml
复制代码
<?xml version="1.0" encoding="utf-8"?>
<vote>
  <item belong="三国演义">
    <id>1</id>
    <name>赵云</name>
    <number>100</number>
  </item>
  <item belong="水浒">
    <id>2</id>
    <name>李逵</name>
    <number>4</number>
  </item>
  <item belong="三国演义">
    <id>3</id>
    <name>诸葛亮</name>
    <number>100</number>
  </item>
</vote>
复制代码
 
3_2,/DemoReadXml.aspx.cs  
复制代码
using System;

using System.Data;
public partial class DemoReadXml : System.Web.UI.Page
{
    /// <summary>
    /// ylb;1, 读取XML文档
    /// </summary>
    private void ReadXml()
    { 
        //创建一个虚拟库
        DataSet ds = new DataSet();
        //加载XML
        ds.ReadXml(Server.MapPath("Vote.xml"));

        //取出表
        DataTable dt = ds.Tables[0];

        //遍历表
        Response.Write("<pre>");
        //循环行
        for (int i = 0; i < dt.Rows.Count; i++)
        { 
            //循环列
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                //输出一列的值
                Response.Write(dt.Rows[i][j]+"\t");
            }
            Response.Write("\n");
        }
        Response.Write("</pre>");


        //把虚拟表给GridView
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        //调用
        ReadXml();
    }
}
复制代码

 

4,ylb_menu:2, DemoWriteXml
 
4_1,DemoWriteXml.aspx.cs ylb_tip:写Xml文档,Response写Xml文档
复制代码
using System;

using System.Data;
using System.Data.SqlClient;
public partial class DemoWriteXml : System.Web.UI.Page
{

    /// <summary>
    /// ylb:1,把数据库中的表写成XML文档
    /// 数据读取器(DataReader)
    /// </summary>
    private void WriteXml()
    {
        string sql = "select top 10 productID,productName,unitPrice from Products";
        //string connStr = "Server=.;Database=Northwind;uid=sa;pwd=m123";
        string connStr = "Server=.;Database=Northwind;Integrated Security=SSPI";

        //创建一个虚拟库
        DataSet ds = new DataSet("Northwind");
        //创建一个虚拟表
        DataTable dt = new DataTable("Products");

        SqlConnection conn = new SqlConnection(connStr);
        SqlCommand com = conn.CreateCommand();

        //把sql赋值给com.CommandText
        com.CommandText = sql;
        //peican

        conn.Open();

        //execute
        try
        {
            SqlDataReader sdr = com.ExecuteReader();

            //向虚拟表中加载数据
            dt.Load(sdr);
        }
        finally
        {
            conn.Close();
        }

        //把表添加到库中 
        ds.Tables.Add(dt);

        //写XML文档
        ds.WriteXml(Server.MapPath("Products.xml"));

        Response.Write("写Xml文档成功!");

    }

    
    /// <summary>
    /// ylb:2,把数据库中的表写成XML文档
    /// 用适配器(DataAdapter)
    /// </summary>
    private void WriteXml2()
    {
        string sql = "select top 10 productID,productName,unitPrice from Products";
        string connStr = "Server=.;Database=Northwind;Integrated Security=SSPI";

        //创建一个虚拟表
        DataSet ds = new DataSet("Northwind");

        SqlDataAdapter sdr = new SqlDataAdapter(sql, connStr);

        //用适配器去填充虚拟库
        sdr.Fill(ds);

        ds.Tables[0].TableName = "Products";    //给表格命名        

        //写XML文档
        ds.WriteXml(Server.MapPath("Products2.xml"));

        Response.Write("写Xml文档成功!");
    }

    /// <summary>
    /// ylb:2,把数据库中的表写成XML文档
    /// 用适配器(DataReader)
    /// </summary>
    private void WriteXml3()
    {
        string connStr = "Server=.;Database=Northwind;Integrated Security=SSPI";
        string sql = "select top 10 productId,productName,unitprice from products";


        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = connStr;

        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = sql;

        conn.Open();
        try
        {
            //直接输出Xml文档
            Response.ContentType = "text/xml";  //输出文档类型为xml
            Response.Write("<?xml version='1.0' encoding='UTF-8'?>");   //声明xml
            Response.Write("<Northwind>");   //起始根元素
            SqlDataReader sdr = cmd.ExecuteReader();
            while (sdr.Read())
            {
                //子元素
                Response.Write("<Products>");
                Response.Write(string.Format("<productId>{0}</productId>", sdr.GetInt32(0)));
                Response.Write(string.Format("<productName>{0}</productName>", sdr.GetString(1)));
                Response.Write(string.Format("<unitprice>{0}</unitprice>", sdr.GetDecimal(2)));
                Response.Write("</Products>");
            }
            Response.Write("</Northwind>"); //终止根元素

        }
        finally
        {
            conn.Close();
        }

        Response.End(); //停止前台页面输出
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        //调用
        //ylb:1,
        //WriteXml();

        //ylb:2,
        //WriteXml2();

        //ylb:3,
        WriteXml3();
    }
}
复制代码

 

5,示例|讲解案例下载

博客园讲解:

       http://ylbtech.cnblogs.com/

百度文库开发文档:

       http://passport.baidu.com/?business&aid=6&un=ylbtech#7

谷歌开源代码下载:

       http://code.google.com/p/ylbtechaspnet/downloads/list

请单击“ylbtechASPnetXml100010011”

 

本文转自ylbtech博客园博客,原文链接:http://www.cnblogs.com/ylbtech/archive/2012/08/16/2642410.html,如需转载请自行联系原作者


相关文章
|
7月前
|
XML 存储 JavaScript
DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
**XML DOM 遍历、操作和导航概述** - 遍历XML节点树用于提取信息,例如,通过JavaScript的DOM API循环`&lt;book&gt;`子节点显示名称和值。 - DOM解析器处理XML文本数据,包括解析字符数据(PCDATA)和识别CDATA段。 - 节点导航涉及`parentNode`、`childNodes`等属性,`get_nextSibling`等辅助函数避免空文本节点。 - `getElementsByTagName`、`getAttribute`和`nodeValue`用于检索元素、属性值和文本。
93 6
DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
|
XML 存储 C#
C#三十 Ado.net和XML
C#三十 Ado.net和XML
61 0
|
XML 存储 JSON
使用自定义XML配置文件在.NET桌面程序中保存设置
本文将详细介绍如何在.NET桌面程序中使用自定义的XML配置文件来保存和读取设置。除了XML之外,我们还将探讨其他常见的配置文件格式,如JSON、INI和YAML,以及它们的优缺点和相关的NuGet类库。最后,我们将重点介绍我们为何选择XML作为配置文件格式,并展示一个实用的示例。
133 0
|
4月前
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
151 7
使用Java和XPath在XML文档中精准定位数据
|
16天前
|
API C#
在.NET中使用QuestPDF高效地生成PDF文档
在.NET中使用QuestPDF高效地生成PDF文档
|
XML JSON 人工智能
Error while extracting response for type [class xxx] and content type application/xml;charset=UTF-8
Error while extracting response for type [class xxx] and content type application/xml;charset=UTF-8
1197 0
|
4月前
|
SQL Oracle 关系型数据库
.NET 开源快捷的数据库文档查询和生成工具
【8月更文挑战第1天】推荐几款.NET开源数据库文档工具:1. DBDocumentor,支持多类型数据库,快速生成详尽文档;2. SqlDoc,界面简洁,自定义内容与格式;3. DBInfo,强大查询功能,支持多种导出格式。这些工具有效提升文档管理效率与质量。
|
5月前
|
SQL JavaScript 安全
基于.NET开源跨平台的文档管理系统
基于.NET开源跨平台的文档管理系统
134 0
|
7月前
|
XML 存储 C#
C# xml文档反序列化记事
本文介绍了使用XmlSerializer进行XML序列化和反序列化的关键点。包括:1) 以独占方式读取XML文件以避免并发问题;2) 当元素名与类型名不一致时,可通过`[XmlArrayItem]`指定元素名,或创建继承自原始类型的子类;3) 处理DateTime反序列化错误,通过中间字符串属性转换;4) 提到了常用C#特性如`[XmlRoot]`, `[XmlElement]`, `[XmlAttribute]`, `[XmlIgnore]`和`[XmlArrayItem]`的作用。
|
7月前
|
XML JavaScript 前端开发
XML文档节点导航与选择指南
XPath是XSLT的核心部分,用于XML文档的节点定位和选择。它采用路径表达式语法,包含200多个内置函数处理各种数据类型。XPath在编程语言如JavaScript中广泛使用,与XSLT配合进行XML转换和样式处理。它涉及7种节点类型,如元素、属性和文本,以及多种节点间关系,如父、子、同级等。XPath还使用轴(如ancestor、child)来描述节点间的关联,并支持运算符进行逻辑和数学操作。
89 0
XML文档节点导航与选择指南