在ASP.NET中读写XML数据的多种方法

 更新时间:2025年01月24日 11:07:06   作者:xcLeigh  
在ASP.NET日常开发中,XML(可扩展标记语言)是一种常用的数据交换格式,它被广泛用于配置文件、数据传输和Web服务等场景,在.NET框架中,提供了多种类和方法来读写XML数据,以下是对ASP.NET中读写XML的详解,需要的朋友可以参考下

前言

在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

一、XML 概述

1.1 定义和结构

 XML(eXtensible Markup Language)是一种可扩展标记语言,用于存储和传输数据。它的结构类似于 HTML,但更侧重于数据的描述。

XML 文档由元素(element)、属性(attribute)、文本(text)等组成。元素是 XML 的主要组成部分,以标签(tag)形式存在,例如和是一对标签,表示一个名为 “book” 的元素。元素可以包含其他元素、文本或属性。属性是在元素标签内定义的名称 - 值对,如中的genre就是属性,其值为fiction。

1.2 应用场景

数据存储与交换:在不同系统之间交换数据时,XML 是一种常用的格式。例如,企业之间的电子数据交换(EDI)可能会使用 XML 来传输订单信息、库存信息等。

配置文件:许多应用程序使用 XML 作为配置文件的格式。在ASP.NET中,web.config文件就是一个 XML 文件,用于配置应用程序的各种设置,如数据库连接字符串、身份验证模式等。

二、读取 XML 文件

2.1 使用XmlDocument类(DOM 方式)

加载 XML 文件:XmlDocument类提供了一种文档对象模型(DOM)的方式来处理 XML。首先,需要加载 XML 文件。例如:

using System.Xml;
class Program
{
    static void Main()
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load("books.xml");
        // 后续处理
    }
}

遍历 XML 元素:可以通过XmlNode对象来遍历 XML 文档中的元素。例如,要遍历根元素下的所有子元素,可以使用以下代码:

XmlNode root = xmlDoc.DocumentElement;
foreach (XmlNode child in root.ChildNodes)
{
    if (child.NodeType == XmlNodeType.Element)
    {
        Console.WriteLine(child.Name);
    }
}

读取元素属性和文本内容:对于包含属性和文本的元素,可以这样读取。假设 XML 中有一个元素,其中包含id属性和title文本内容:

foreach (XmlNode bookNode in root.ChildNodes)
{
    if (bookNode.NodeType == XmlNodeType.Element && bookNode.Name == "book")
    {
        string id = bookNode.Attributes["id"].Value;
        string title = bookNode.InnerText;
        Console.WriteLine($"Book ID: {id}, Title: {title}");
    }
}

2.2 使用XmlReader类(流方式)

顺序读取 XML 内容:XmlReader类提供了一种基于流的方式来快速读取 XML 内容,适合处理大型 XML 文件。例如:

using System.Xml;
class Program
{
    static void Main()
    {
        using (XmlReader reader = XmlReader.Create("books.xml"))
        {
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element && reader.Name == "book")
                {
                    string id = reader.GetAttribute("id");
                    reader.Read(); // 移动到元素内部的文本节点
                    string title = reader.Value;
                    Console.WriteLine($"Book ID: {id}, Title: {title}");
                }
            }
        }
    }
}

性能优势:与XmlDocument相比,XmlReader在处理大型 XML 文件时具有更好的性能,因为它不需要将整个 XML 文件加载到内存中构建 DOM 树,而是以流的方式顺序读取,占用的内存资源较少。

三、写入 XML 文件

3.1 使用XmlDocument类

创建 XML 元素和属性:可以通过XmlDocument创建新的 XML 元素和属性。例如,创建一个新的book元素并添加到 XML 文档中:

XmlDocument newXmlDoc = new XmlDocument();
XmlElement rootElement = newXmlDoc.CreateElement("books");
newXmlDoc.AppendChild(rootElement);
XmlElement bookElement = newXmlDoc.CreateElement("book");
bookElement.SetAttribute("id", "1");
XmlElement titleElement = newXmlDoc.CreateElement("title");
titleElement.InnerText = "New Book";
bookElement.AppendChild(titleElement);
rootElement.AppendChild(bookElement);

保存 XML 文件:使用Save方法保存 XML 文件,例如newXmlDoc.Save(“new_books.xml”);。

3.2 使用XmlWriter类

构建 XML 结构并写入文件:XmlWriter提供了一种灵活的方式来构建和写入 XML 内容。例如:

using System.Xml;
class Program
{
    static void Main()
    {
        using (XmlWriter writer = XmlWriter.Create("new_books.xml"))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("books");
            writer.WriteStartElement("book");
            writer.WriteAttributeString("id", "1");
            writer.WriteElementString("title", "New Book");
            writer.WriteEndElement();
            writer.WriteEndElement();
            writer.WriteEndDocument();
        }
    }
}

格式控制:可以通过设置XmlWriterSettings来控制 XML 文件的格式,如缩进、编码等。例如:

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create("new_books.xml", settings))
{
    // 写入操作
}

这样写入的 XML 文件会有缩进,更加美观易读。

结束语

到此这篇关于在ASP.NET中读写XML数据的多种方法的文章就介绍到这了,更多相关ASP.NET读写XML数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# 小数位数保留的方法集锦

    C# 小数位数保留的方法集锦

    c#下关于小数位数的一些实现方法集合,方便对c#小数位数控制的朋友。
    2008-12-12
  • Asp.net MVC中的Http管道事件为什么要以Application_开头(原因解析)

    Asp.net MVC中的Http管道事件为什么要以Application_开头(原因解析)

    在ASP.NET MVC中,为了在API请求结束时释放数据库链接,避免连接池被爆掉,可以通过在Global.asax.cs文件中定义并实现Application_EndRequest方法来实现,本文介绍Asp.net MVC中的Http管道事件为什么要以Application_开头,感兴趣的朋友一起看看吧
    2024-12-12
  • 浅谈c#设计模式之单一原则

    浅谈c#设计模式之单一原则

    这篇文章主要介绍了浅谈.net设计模式之单一原则,需要的朋友可以参考下
    2014-12-12
  • asp.net编程实现删除文件夹及文件夹下文件的方法

    asp.net编程实现删除文件夹及文件夹下文件的方法

    这篇文章主要介绍了asp.net编程实现删除文件夹及文件夹下文件的方法,涉及asp.net针对文件与目录的遍历及删除操作实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • .net/c# memcached缓存获取所有缓存键的方法步骤

    .net/c# memcached缓存获取所有缓存键的方法步骤

    这篇文章主要介绍了.net/c# memcached缓存获取所有缓存键的方法步骤,大家参考使用吧
    2013-12-12
  • jquery提交表单mvc3后台处理示例

    jquery提交表单mvc3后台处理示例

    这篇文章主要介绍了jquery提交表单mvc3后台处理示例,需要的朋友可以参考下
    2014-05-05
  • ASP.NET MVC授权过滤器用法

    ASP.NET MVC授权过滤器用法

    这篇文章介绍了ASP.NET MVC授权过滤器的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • MVC框架是什么 这里为你解答

    MVC框架是什么 这里为你解答

    MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。这篇文章为大家详细介绍了MVC框架是什么,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • ASP.NET CORE实现跨域

    ASP.NET CORE实现跨域

    这篇文章介绍了ASP.NET CORE实现跨域的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • webapi中如何使用依赖注入

    webapi中如何使用依赖注入

    本篇将要和大家分享的是webapi中如何使用依赖注入,依赖注入这个东西在接口中常用,实际工作中也用的比较频繁,因此这里分享两种在api中依赖注入的方式Ninject和Unity。下面跟着小编一起来看下吧
    2017-02-02

最新评论