ASP.NET实现XML文件的读取与写入实例

在ASP.NET中,可以使用System.Xml命名空间中的类来读取和写入XML文件。以下是一个完整的示例,展示如何读取和写入XML文件。


1. 创建XML文件

假设我们有一个名为Users.xml的XML文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Users>
  <User>
    <ID>1</ID>
    <Name>姓名</Name>
    <Email>Email</Email>
  </User>
  <User>
    <ID>2</ID>
    <Name>姓名</Name>
    <Email>Email</Email>
  </User>
</Users>

2. 读取XML文件

使用XmlDocumentXDocument类读取XML文件。

使用 XmlDocument 读取XML
using System;
using System.Web;
using System.Xml;

public class XmlHelper
{
    // 读取XML文件
    public void ReadXmlFile(string filePath)
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(filePath);

        // 获取根节点
        XmlNode root = xmlDoc.DocumentElement;

        // 遍历子节点
        foreach (XmlNode node in root.ChildNodes)
        {
            string id = node["ID"].InnerText;
            string name = node["Name"].InnerText;
            string email = node["Email"].InnerText;

            Console.WriteLine($"ID: {id}, Name: {name}, Email: {email}");
        }
    }
}
在ASP.NET页面中使用

HTML部分 (Default.aspx):

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>读取XML文件</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Button ID="btnReadXml" runat="server" Text="读取XML文件" OnClick="btnReadXml_Click" />
            <br />
            <asp:Label ID="lblResult" runat="server" Text=""></asp:Label>
        </div>
    </form>
</body>
</html>

代码部分 (Default.aspx.cs):

using System;
using System.IO;
using System.Text;
using System.Web;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void btnReadXml_Click(object sender, EventArgs e)
        {
            string filePath = HttpContext.Current.Server.MapPath("~/Users.xml");
            XmlHelper xmlHelper = new XmlHelper();

            StringBuilder result = new StringBuilder();
            using (StringWriter sw = new StringWriter(result))
            {
                Console.SetOut(sw); // 重定向控制台输出到StringBuilder
                xmlHelper.ReadXmlFile(filePath);
            }

            lblResult.Text = result.ToString().Replace(Environment.NewLine, "<br />");
        }
    }
}

3. 写入XML文件

使用XmlDocumentXDocument类写入XML文件。

使用 XmlDocument 写入XML
using System;
using System.Xml;

public class XmlHelper
{
    // 写入XML文件
    public void WriteXmlFile(string filePath)
    {
        XmlDocument xmlDoc = new XmlDocument();

        // 创建根节点
        XmlElement root = xmlDoc.CreateElement("Users");
        xmlDoc.AppendChild(root);

        // 创建子节点
        XmlElement user = xmlDoc.CreateElement("User");
        root.AppendChild(user);

        XmlElement id = xmlDoc.CreateElement("ID");
        id.InnerText = "3";
        user.AppendChild(id);

        XmlElement name = xmlDoc.CreateElement("Name");
        name.InnerText = "Alice Johnson";
        user.AppendChild(name);

        XmlElement email = xmlDoc.CreateElement("Email");
        email.InnerText = "alice@example.com";
        user.AppendChild(email);

        // 保存XML文件
        xmlDoc.Save(filePath);
    }
}
在ASP.NET页面中使用

HTML部分 (Default.aspx):

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>写入XML文件</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Button ID="btnWriteXml" runat="server" Text="写入XML文件" OnClick="btnWriteXml_Click" />
            <br />
            <asp:Label ID="lblResult" runat="server" Text=""></asp:Label>
        </div>
    </form>
</body>
</html>

代码部分 (Default.aspx.cs):

using System;
using System.IO;
using System.Web;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void btnWriteXml_Click(object sender, EventArgs e)
        {
            string filePath = HttpContext.Current.Server.MapPath("~/Users.xml");
            XmlHelper xmlHelper = new XmlHelper();
            xmlHelper.WriteXmlFile(filePath);

            lblResult.Text = "XML文件已写入。";
        }
    }
}

4. 使用 XDocument 读取和写入XML

XDocument是LINQ to XML的一部分,提供了更简洁的API来操作XML。

使用 XDocument 读取XML
using System;
using System.Linq;
using System.Xml.Linq;

public class XmlHelper
{
    // 读取XML文件
    public void ReadXmlFile(string filePath)
    {
        XDocument xDoc = XDocument.Load(filePath);

        var users = from user in xDoc.Descendants("User")
                    select new
                    {
                        ID = user.Element("ID").Value,
                        Name = user.Element("Name").Value,
                        Email = user.Element("Email").Value
                    };

        foreach (var user in users)
        {
            Console.WriteLine($"ID: {user.ID}, Name: {user.Name}, Email: {user.Email}");
        }
    }
}
使用 XDocument 写入XML
using System;
using System.Xml.Linq;

public class XmlHelper
{
    // 写入XML文件
    public void WriteXmlFile(string filePath)
    {
        XDocument xDoc = new XDocument(
            new XElement("Users",
                new XElement("User",
                    new XElement("ID", "3"),
                    new XElement("Name", "Alice Johnson"),
                    new XElement("Email", "alice@example.com")
                )
            )
        );

        xDoc.Save(filePath);
    }
}

5. 运行示例

  1. Users.xml文件放置在项目的根目录下。

  2. 运行项目并访问Default.aspx页面。

  3. 点击“读取XML文件”按钮,显示XML文件内容。

  4. 点击“写入XML文件”按钮,将新数据写入XML文件。


通过XmlDocumentXDocument类,可以轻松地读取和写入XML文件。XmlDocument适合传统的DOM操作,而XDocument提供了更简洁的LINQ语法。根据实际需求选择合适的类来处理XML数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CsharpDev-奶豆哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值