C#讀取XML文件詳解

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:31
下一篇 2025-01-04 19:31

相關推薦

  • vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常問題的解決

    本文旨在解決vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常的問題,提供完整的代碼示例供參考。 一、分析問題 首先,需了解vue中下載文件的情況。一般情況下,我們…

    編程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • 為什麼用cmd運行Java時需要在文件內打開cmd為中心

    在Java開發中,我們經常會使用cmd在命令行窗口運行程序。然而,有時候我們會發現,在運行Java程序時,需要在文件內打開cmd為中心,這讓很多開發者感到疑惑,那麼,為什麼會出現這…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Python將矩陣存為CSV文件

    CSV文件是一種通用的文件格式,在統計學和計算機科學中非常常見,一些數據分析工具如Microsoft Excel,Google Sheets等都支持讀取CSV文件。Python內置…

    編程 2025-04-29
  • Python zipfile解壓文件亂碼處理

    本文主要介紹如何在Python中使用zipfile進行文件解壓的處理,同時詳細討論在解壓文件時可能出現的亂碼問題的各種解決辦法。 一、zipfile解壓文件亂碼問題的根本原因 在P…

    編程 2025-04-29
  • Python如何導入py文件

    Python是一種開源的高級編程語言,因其易學易用和強大的生態系統而備受青睞。Python的import語句可以幫助用戶將一個模塊中的代碼導入到另一個模塊中,從而實現代碼的重用。本…

    編程 2025-04-29
  • Python合併多個相同表頭文件

    對於需要合併多個相同表頭文件的情況,我們可以使用Python來實現快速的合併。 一、讀取CSV文件 使用Python中的csv庫讀取CSV文件。 import csv with o…

    編程 2025-04-29
  • Python寫文件a

    Python語言是一種功能強大、易於學習、通用並且高級編程語言,它具有許多優點,其中之一就是能夠輕鬆地進行文件操作。文件操作在各種編程中都佔有重要的位置,Python作為開發人員常…

    編程 2025-04-29

發表回復

登錄後才能評論