XML(可擴展標記語言)是一種常用於數據交換的格式,它比較靈活,對於不同的應用場景,可以定製不同的XML結構。C#作為一種通用、面向對象的編程語言,在讀取XML文件方面有著很強大的功能。本文將從不同的角度,詳細闡述C#讀取XML文件的方法和技巧。
一、CBA賽程
對於C#開發人員來說,讀取CBA賽程XML文件是一個常見的需求。下面是一個簡單的XML結構,它描述了2019-2020賽季的CBA比賽安排:
<?xml version="1.0" encoding="utf-8" ?> <schedule> <game date="2020-01-05"> <home>北京首鋼</home> <away>四川男籃</away> </game> <game date="2020-01-10"> <home>上海大鯊魚</home> <away>天津榮鋼</away> </game> </schedule>
為了讀取這個XML文件,我們可以使用C#的System.Xml命名空間提供的XmlDocument類。
using System.Xml; class Program { static void Main(string[] args) { XmlDocument doc = new XmlDocument(); doc.Load("schedule.xml"); XmlNodeList games = doc.GetElementsByTagName("game"); foreach (XmlNode game in games) { string date = game.Attributes["date"].Value; string home = game["home"].InnerText; string away = game["away"].InnerText; Console.WriteLine("{0} : {1} vs {2}", date, home, away); } } }
以上代碼首先載入XML文檔,使用GetElementsByTagName方法獲取所有game節點,循環處理每個節點,讀取date、home、away元素的文本內容,並將信息輸出到控制台。
二、Coach
XML文件不僅可以用於存儲數據,還可以表示對象的屬性和方法。下面是一個Coach.xml文件,它描述了一個教練對象。
<?xml version="1.0" encoding="utf-8" ?> <Coach name="Gregg Popovich"> <Age>71</Age> <Team>San Antonio Spurs</Team> <Seasons>23</Seasons> <Championships>5</Championships> </Coach>
為了讀取該XML文件,我們需要先定義一個Coach類,其中包含name、age、team、seasons和championships屬性:
class Coach { public string Name; public int Age; public string Team; public int Seasons; public int Championships; }
然後,我們可以使用C#的System.Xml.Serialization命名空間提供的XmlSerializer類,將XML文件反序列化為Coach對象。
using System.Xml.Serialization; using System.IO; class Program { static void Main(string[] args) { XmlSerializer serializer = new XmlSerializer(typeof(Coach)); StreamReader reader = new StreamReader("Coach.xml"); Coach coach = (Coach)serializer.Deserialize(reader); Console.WriteLine("{0} ({1}), {2} / {3} seasons, {4} championships", coach.Name, coach.Age, coach.Team, coach.Seasons, coach.Championships); } }
以上代碼首先創建了一個XmlSerializer對象,然後使用StreamReader讀取Coach.xml文件內容,將XML文件反序列化為Coach對象,並將信息輸出到控制台。
三、CCTV5節目表
CCTV5是中國中央電視台的一個體育頻道,它每天會有大量的體育節目。下面是一個CCTV5.xml文件,它描述了2019年12月份的節目表。
<?xml version="1.0" encoding="utf-8" ?> <schedule month="12"> <program time="2019-12-01 06:00"> <name>運動健康</name> <type>健康</type> </program> <program time="2019-12-01 08:00"> <name>CBA常規賽</name> <type>籃球</type> </program> <program time="2019-12-01 12:00"> <name>足球之夜</name> <type>足球</type> </program> </schedule>
為了讀取該XML文件,我們可以使用LINQ to XML。首先,我們需要引用System.Xml.Linq命名空間,然後使用XDocument.Load方法載入XML文件。
using System.Xml.Linq; class Program { static void Main(string[] args) { XDocument doc = XDocument.Load("CCTV5.xml"); var query = from p in doc.Descendants("program") where (DateTime)p.Attribute("time") >= DateTime.Today select new { time = (DateTime)p.Attribute("time"), name = (string)p.Element("name"), type = (string)p.Element("type") }; foreach (var program in query) { Console.WriteLine("{0} : {1} ({2})", program.time.ToShortTimeString(), program.name, program.type); } } }
以上代碼使用LINQ to XML的語法,查詢出所有今天及以後的節目,並將結果輸出到控制台。
四、Chat GPT人工智慧
Chat GPT是一種基於自然語言處理的人工智慧,它可以模擬人類對話,提供普適性和個性化的服務。我們可以使用XML文件存儲Chat GPT的訓練數據。下面是一個chat.xml文件,它包含了一些問答對。
<?xml version="1.0" encoding="utf-8" ?> <qa> <pair> <question>你叫什麼名字?</question> <answer>我叫 Chat GPT。</answer> </pair> <pair> <question>你會什麼語言?</question> <answer>我會中文、英文、法語、德語、日語、韓語等多種語言。</answer> </pair> </qa>
為了讀取該XML文件,我們可以使用LINQ to XML。首先,我們需要定義一個QAPair類,該類包含question和answer兩個屬性:
class QAPair { public string Question; public string Answer; }
然後,我們可以使用LINQ to XML查詢出所有問答對,並將它們存儲在一個List中。
using System.Xml.Linq; class Program { static void Main(string[] args) { XDocument doc = XDocument.Load("chat.xml"); var query = from p in doc.Descendants("pair") select new QAPair { Question = (string)p.Element("question"), Answer = (string)p.Element("answer") }; List qaPairs = query.ToList(); } }
以上代碼使用LINQ to XML的語法,查詢出所有問答對,並將它們存儲在一個List中,以便後續訓練和使用。
五、CCTV5在線直播
XML文件還可以用於Web應用程序的開發。下面是一個cctv5.xml文件,它描述了CCTV5的在線直播地址。
<?xml version="1.0" encoding="utf-8" ?> <channels> <channel name="cctv5"> <url>http://cctv5.livecdn.biz/cctv5_800/index.m3u8</url> </channel> <channel name="cctv5+"> <url>http://cctv5plus.livecdn.biz/cctv5plus_800/index.m3u8</url> </channel> </channels>
為了讀取該XML文件,我們可以使用C#的System.Net.Http命名空間提供的HttpClient類,請求XML文件,並使用LINQ to XML提取其中的直播地址。
using System.Net.Http; using System.Xml.Linq; class Program { static void Main(string[] args) { HttpClient client = new HttpClient(); HttpResponseMessage response = client.GetAsync("http://example.com/cctv5.xml").Result; string xml = response.Content.ReadAsStringAsync().Result; XDocument doc = XDocument.Parse(xml); XElement channel = doc.Descendants("channel").FirstOrDefault(c => c.Attribute("name").Value == "cctv5"); string url = channel.Element("url").Value; Console.WriteLine(url); } }
以上代碼使用HttpClient發送HTTP請求,獲取XML文件內容,使用LINQ to XML提取channel節點,讀取其url元素的文本內容,並將直播地址輸出到控制台。
六、C1駕照能開什麼車
XML文件還可以用於實現數據查詢。下面是一個c1.xml文件,它列出了C1駕照能開的車輛類型。
<?xml version="1.0" encoding="utf-8" ?> <driving_license> <license_type>C</license_type> <vehicle_type>汽車、普通三輪摩托車</vehicle_type> <min_age>18</min_age> <engine_displacement>不限</engine_displacement> <transmission_type>不限</transmission_type> </driving_license>
為了讀取該XML文件,我們可以使用LINQ to XML。下面的代碼演示了如何讀取C1駕照能開的車輛類型:
using System.Xml.Linq; class Program { static void Main(string[] args) { XDocument doc = XDocument.Load("c1.xml"); var query = from p in doc.Descendants("licensed_type") where (string)p == "C" select new { vehicle_type = (string)p.Element("vehicle_type"), }; foreach (var item in query) { Console.WriteLine(item.vehicle_type); } } }
以上代碼使用LINQ to XML的語法,查詢出所有C1駕照能開的車輛類型,並將結果輸出到控制台。
七、C反應蛋白高說明什麼
XML文件還可以用於存儲醫學數據。下面是一個c反應蛋白.xml文件,它描述了C反應蛋白(CRP)與炎症反應的關係。
<?xml version="1.0" encoding="utf-8" ?> <crp> <result range="mg/L"> <low>0.00</low> <high>3.00</high> </result> <explanation> <p>正常血清CRP水平約為低於10mg/L,病原菌引起的急性炎症或組織壞死時,CRP可能會增加到1000mg/L。濃度>10mg/L可能為感染性疾病。</p> </explanation> </crp>
為了讀取該
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/309803.html