ASP.NET |日常開發中讀寫XML詳解

在這里插入圖片描述
在這里插入圖片描述

ASP.NET |日常開發中讀寫XML詳解

  • 前言
  • 一、XML 概述
    • 1.1 定義和結構
    • 1.2 應用場景
  • 二、讀取 XML 文件
    • 2.1 使用XmlDocument類(DOM 方式)
    • 2.2 使用XmlReader類(流方式)
  • 三、寫入 XML 文件
    • 3.1 使用XmlDocument類
    • 3.2 使用XmlWriter類
  • 結束語
  • 優質源碼分享

ASP.NET |日常開發中讀寫XML詳解,在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 文件會有縮進,更加美觀易讀。

結束語

????????親愛的朋友,無論前路如何漫長與崎嶇,都請懷揣夢想的火種,因為在生活的廣袤星空中,總有一顆屬于你的璀璨星辰在熠熠生輝,靜候你抵達。

???????? 愿你在這紛繁世間,能時常收獲微小而確定的幸福,如春日微風輕拂面龐,所有的疲憊與煩惱都能被溫柔以待,內心永遠充盈著安寧與慰藉。

????????至此,文章已至尾聲,而您的故事仍在續寫,不知您對文中所敘有何獨特見解?期待您在心中與我對話,開啟思想的新交流。


--------------- 業精于勤,荒于嬉 ---------------

請添加圖片描述

--------------- 行成于思,毀于隨 ---------------

優質源碼分享

  • 【百篇源碼模板】html5各行各業官網模板源碼下載

  • 【模板源碼】html實現酷炫美觀的可視化大屏(十種風格示例,附源碼)

  • 【VUE系列】VUE3實現個人網站模板源碼

  • 【HTML源碼】HTML5小游戲源碼

  • 【C#實戰案例】C# Winform貪吃蛇小游戲源碼


在這里插入圖片描述


???? 💞 關注博主 帶你實現暢游前后端

???? 🏰 大屏可視化 帶你體驗酷炫大屏

???? 💯 神秘個人簡介 帶你體驗不一樣得介紹

???? 🎀 酷炫邀請函 帶你體驗高大上得邀請


???? ① 🉑提供云服務部署(有自己的阿里云);
???? ② 🉑提供前端、后端、應用程序、H5、小程序、公眾號等相關業務;
???? 如🈶合作請聯系我,期待您的聯系。
????:本文撰寫于CSDN平臺,作者:xcLeigh所有權歸作者所有) ,https://blog.csdn.net/weixin_43151418,如果相關下載沒有跳轉,請查看這個地址,相關鏈接沒有跳轉,皆是抄襲本文,轉載請備注本文原地址。


???? 親,碼字不易,動動小手,歡迎 點贊 ? 收藏,如 🈶 問題請留言(評論),博主看見后一定及時給您答復,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/144309325(防止抄襲,原文地址不可刪除)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62970.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62970.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62970.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分布式 Paxos算法 總結

前言 相關系列 《分布式 & 目錄》《分布式 & Paxos算法 & 總結》《分布式 & Paxos算法 & 問題》 參考文獻 《圖解超難理解的 Paxos 算法(含偽代碼)》《【超詳細】分布式一致性協議 - Paxos》 Basic-Paxos 基礎帕克索斯算法…

Git-基礎操作命令

目錄 Git基礎操作命令 case *查看提交日志 log 版本回退 get add . Git基礎操作命令 我們創建并且初始化這個倉庫以后,我們就要在里面進行操作。 Git 對于文件的增刪改查存在幾個狀態,這些修改狀態會隨著我們執行Git的命令而發生變化。 untracked、…

Spring Boot 實戰:構建一個社交平臺 API

在這篇博客中,我們將繼續深入 Spring Boot 的開發實踐,通過構建一個簡單的社交平臺 API,幫助大家理解如何使用 Spring Boot 高效地開發一個具有注冊、登錄、個人資料管理、帖子發布與評論、點贊等功能的社交平臺。在開發過程中,我…

配置mysqld(讀取選項內容,基本配置),數據目錄(配置的必要性,目錄下的內容,具體文件介紹,修改配置)

目錄 配置mysqld 讀取選項內容 介紹 啟動腳本 基本配置 內容 端口號 數據目錄的路徑 配置的必要性 配置路徑 mysql數據目錄 具體文件 修改配置時 權限問題 配置mysqld 讀取選項內容 介紹 會從[mysqld] / [server] 節點中讀取選項內容 優先讀取[server] 雖然服務…

智能家居WTR096-16S錄放音芯片方案,實現語音播報提示及錄音留言功能

前言: 在當今社會的高速運轉之下,夜幕低垂之時,許多辛勤工作的父母尚未歸家。對于肩負家庭責任的他們而言,確保孩童按時用餐與居家安全成為心頭大事。此時,家居留言錄音提示功能應運而生,恰似家中的一位無形…

Java 編程基礎:開啟編程世界的大門

一、Java 環境搭建 在開始編寫 Java 代碼之前,我們需要先搭建 Java 開發環境。 1. 安裝 JDK(Java Development Kit) JDK 是 Java 開發的核心工具包,它包含了編譯 Java 源文件所需的編譯器(javac)以及運行…

pytorch bilstm crf的教程,注意 這里不支持批處理,要支持批處理 用torchcrf這個。

### Bi-LSTM Conditional Random Field ### pytorch tutorials https://pytorch.org/tutorials/beginner/nlp/advanced_tutorial.html ### 模型主要結構: ![title](sources/bilstm.png) pytorch bilstm crf的教程,注意 這里不支持批處理 Python version…

【SickOs1.1靶場滲透】

文章目錄 一、基礎信息 二、信息收集 三、反彈shell 四、提權 一、基礎信息 Kali IP:192.168.20.146 靶機IP:192.168.20.150 二、信息收集 端口掃描 nmap -sS -sV -p- -A 192.168.20.150 開放了22、3128端口,8080端口顯示關閉 22端…

【HF設計模式】03-裝飾者模式

聲明:僅為個人學習總結,還請批判性查看,如有不同觀點,歡迎交流。 摘要 《Head First設計模式》第3章筆記:結合示例應用和代碼,介紹裝飾者模式,包括遇到的問題、遵循的 OO 原則、達到的效果。 …

Mysql數據庫中,什么情況下設置了索引但無法使用?

在MySQL數據庫中,即使已經正確設置了索引,但在某些情況下索引可能無法被使用。 以下是一些常見的情況: 1. 數據分布不均勻 當某個列的數據分布非常不均勻時,索引可能無法有效地過濾掉大部分的數據,導致索引失效。 …

秒殺業務中的庫存扣減為什么不加分布式鎖?

前言 說到秒殺業務的庫存扣減,就還是得先確認我們的扣減基本方案。 秒殺場景的庫存扣減方案 一般的做法是,先在Redis中做扣減,然后發送一個MQ消息,消費者在接到消息之后做數據庫中庫存的真正扣減及業務邏輯操作。 如何解決數據…

ChatGPT生成測試用例的最佳實踐(一)

前面介紹的案例主要展示了ChatGPT在功能、安全和性能測試用例生成方面的應用和成果。通過ChatGPT生成測試用例,測試團隊不僅可以提升工作效率,還可以加快測試工作的速度,盡早發現被測系統中的問題。問題及早發現有助于提高軟件的質量和用戶滿…

基于Redis實現令牌桶算法

基于Redis實現令牌桶算法 令牌桶算法算法流程圖優點缺點 實現其它限流算法 令牌桶算法 令牌桶是一種用于分組交換和電信網絡的算法。它可用于檢查數據包形式的數據傳輸是否符合定義的帶寬和突發性限制(流量不均勻或變化的衡量標準)。它還可以用作調度算…

操作系統(8)死鎖

一、概念 死鎖是指在一個進程集合中的每個進程都在等待只能由該集合中的其他進程才能引起的事件,而無限期地僵持下去的局面。在多任務環境中,由于資源分配不當,導致兩個或多個進程在等待對方釋放資源時陷入無限等待的狀態,這就是死…

Micropython 擴展C模塊<HelloWorld>

開發環境 MCU:Pico1(無wifi版)使用固件:自編譯版本開發環境:MacBook Pro Sonoma 14.5開發工具:Thonny 4.1.6開發語言:MicroPython 1.24 執行示例 在github上獲取micropython,我使…

并查集基礎

abstract 并查集(Union-Find Set)是一種數據結構,主要用于處理動態連通性問題(Dynamic Connectivity Problem),例如在圖論中判斷兩點是否屬于同一個連通分量,以及動態地合并集合。 它廣泛應用…

CloudberryDB(一)安裝部署多節點分布式數據庫集群

CloudberryDB: 一個 Greenplum Database 分布式數據庫開源版本的衍生項目, 針對開源 Greenplum Database 優化的地方, CloudberryDB制定了路線圖(https://github.com/orgs/cloudberrydb/discussions/369)并在逐步改…

解決Logitech G hub 無法進入一直轉圈的方案(2024.12)

如果你不是最新版本無法加載嘗試以下方案:刪除AppData 文件夾下的logihub文件夾 具體路徑:用戶名根據實際你的請情況修改 C:\Users\Administrator\AppData\Local 如果你有通過lua編譯腳本,記得備份!! ↓如果你是最新…

數據庫范式與反范式化:如何權衡性能與數據一致性

目錄 1. 什么是數據庫范式(Normalization)?第一范式(1NF)第二范式(2NF)第三范式(3NF) 2. 什么是反范式化(Denormalization)?3. 反范式…

Nmap使用總結

0X00 背景 nmap是測試中常用的網絡探測工具,但是這回簡單的操作,一直了解不深入,現在深入的了解和學習一下。 在文章結構上,我把平時常用的內容提前了,以便再次查閱的時候,比較方便。 0X01 安裝 nmap可…