網站首頁 編程語言 正文
C#獲取XML文件內容的方式
首先設定有一個xml文件Configs.xml,其內容如下:
<?xml version="1.0" encoding="utf-8" ?> <Config> ? <Device name="aaa"> ? ? <Type name="a01" func="1"></Type> ? ? <Type name="a02"></Type> ? ? <Type name="a03"></Type> ? ? <Type name="a04"></Type> ? </Device> ? <Device name="bbb"> ? ? <Type name="b01"></Type> ? ? <Type name="b02"></Type> ? ? <Type name="b03"></Type> ? ? <Type name="b04"></Type> ? </Device> ? <Device name="ccc"> ? ? <Type name="c01"></Type> ? ? <Type name="c02"></Type> ? ? <Type name="c03"></Type> ? ? <Type name="c04" func="2"></Type> ? </Device> </Config>
一、讀取外部的XML文件方法
//獲取所有一級目錄
List<string> devices = new List<string>();
XmlDocument doc = new XmlDocument();
doc.Load(AppDomain.CurrentDomain.BaseDirectory + @"\TEMP\Configs.xml");
XmlNode xnl1 = doc.DocumentElement;
foreach (XmlNode xn1 in xnl1.ChildNodes)
{
? ? XmlElement xe1 = (XmlElement)xn1;
? ? devices.Add(xe1.GetAttribute("name").ToString());
}
return devices;
//獲取某個一級目錄下的子目錄
?List<string> types = new List<string>();
?XmlDocument doc = new XmlDocument();
?doc.Load(AppDomain.CurrentDomain.BaseDirectory + @"\TEMP\Configs.xml");
?XmlNode xnl1 = doc.DocumentElement;
?foreach (XmlNode xn1 in xnl1)
?{
? ? ?XmlElement xe1 = (XmlElement)xn1;
? ? ?if (xe1.GetAttribute("name").ToString() == "aaa")
? ? ?{
? ? ? ? ?XmlNodeList xnl2 = xe1.ChildNodes;
? ? ? ? ?foreach (XmlNode xn2 in xnl2)
? ? ? ? ?{
? ? ? ? ? ? ?XmlElement xe2 = (XmlElement)xn2;
? ? ? ? ? ? ?types.Add(xe2.GetAttribute("name").ToString());
? ? ? ? ?}
? ? ? ? ?break;
? ? ?}
?}
?return types;
二、讀取內部XML文件方法
文件屬性:
復制到輸出目錄:不復制
生成操作:嵌入的資源
//獲取所有一級目錄
List<string> devices = new List<string>(); ? ? ? ??
string config= System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Configs.Configs.xml";
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream s = assembly.GetManifestResourceStream(config);
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create(s, settings);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNode xn = doc.SelectSingleNode("Config");
XmlNodeList xnl1 = xn.ChildNodes;
foreach (XmlNode xn1 in xnl1)
{
? ? XmlElement xe1 = (XmlElement)xn1;
? ? devices.Add(xe1.GetAttribute("name").ToString());
}
reader.Close();
return devices;
//獲取某個一級目錄下的子目錄
List<string> types = new List<string>(); ? ? ? ? ??
string config= System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Configs.Configs.xml";
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream s = assembly.GetManifestResourceStream(config);
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create(s, settings);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNode xn = doc.SelectSingleNode("Config");
XmlNodeList xnl1 = xn.ChildNodes;
foreach (XmlNode xn1 in xnl1)
{
? ? XmlElement xe1 = (XmlElement)xn1;
? ? if (xe1.GetAttribute("name").ToString() == "aaa")
? ? {
? ? ? ? XmlNodeList xnl2 = xe1.ChildNodes;
? ? ? ? foreach (XmlNode xn2 in xnl2)
? ? ? ? {
? ? ? ? ? ? XmlElement xe2 = (XmlElement)xn2;
? ? ? ? ? ? types.Add(xe2.GetAttribute("name").ToString());
? ? ? ? }
? ? ? ? break;
? ? }
}
reader.Close();
return types;
三、讀取類庫中XML文件的方法
文件屬性:
復制到輸出目錄:不復制
生成操作:Resource
List<Type> types = new List<Type>();
string fileName = AppDomain.CurrentDomain.BaseDirectory + "Config.dll";
System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFile(fileName);
string resourceName = assembly.GetName().Name + ".g";
System.Resources.ResourceManager manager = new System.Resources.ResourceManager(resourceName, assembly);
object obj = manager.GetObject("asserts/config.xml");//全部字母小寫
System.IO.Stream stream = (System.IO.Stream)obj;
XmlDocument doc = new XmlDocument();
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;//忽略文檔里面的注釋,因為在沒有特別說明的情況下,注釋也是一個節點
XmlReader reader = XmlReader.Create(stream, settings);
doc.Load(reader);
XmlNode xn = doc.SelectSingleNode("Config");
XmlNodeList xnl1 = xn.ChildNodes;
foreach (XmlNode xn1 in xnl1)
{
? ? XmlElement xe1 = (XmlElement)xn1;
? ? Type type = new Type();
? ? type.name = xe1.GetAttribute("name").ToString();
? ? type.func = xe1.GetAttribute("func").ToString();
? ? XmlNodeList xnl0 = xe1.ChildNodes;
? ? type.Content = xnl0.Item(0).InnerText.Substring(1).TrimEnd();
? ? types.Add(type);
}
reader.Close();
return types;
四、讀取程序內添加的外部可見的XML文件
文件屬性:
復制到輸出目錄:始終復制
生成操作:內容
List<string> devices= new List<string>();
XmlDocument doc = new XmlDocument();
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create(@"Asserts\Config.xml", settings);
doc.Load(reader);
XmlNode xn = doc.SelectSingleNode("Config");
XmlNodeList xnl1 = xn.ChildNodes;
foreach (XmlNode xn1 in xnl1)
{
? ? XmlElement xe1 = (XmlElement)xn1;
? ? devices.Add(xe1.GetAttribute("name").ToString());
}
reader.Close();
return serialsList;
總結
原文鏈接:https://blog.csdn.net/qq_43024228/article/details/126717877
相關推薦
- 2022-11-04 C++淺析內存分區模型概念與示例_C 語言
- 2022-09-26 nodemon安裝在開發環境(非全局安裝)報錯解決【兩種方式】
- 2022-02-24 使用Nginx和Lua進行JWT校驗介紹_nginx
- 2023-03-01 C++?使用?new?創建二維數組實例_C 語言
- 2022-12-06 React?Redux應用示例詳解_React
- 2022-01-29 執行composer安裝命令報錯處理
- 2022-06-28 C#遞歸算法和排列算法_C#教程
- 2023-10-13 ECharts日歷熱力圖點擊事件和選中日期加邊框
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支