c#中使用linq to xml 訪問 xml檔案

來源:互聯網
上載者:User

     使用linq to xml可以很方便的實現對xml檔案的訪問,在網上看到的寫的這方面的文章都稍微有一些混亂。今天部落格園首頁上轉過來的那篇文章寫的也比較不清楚,下面把我在平常中使用linq to xml訪問檔案的方式寫下來,供沒有寫過的兄弟參考:

     首先第一步是選中要訪問xml檔案的屬性copy to out(如test.xml),選擇always,這步的意思是這個xml檔案始終會被輸出到可執行檔所在的檔案夾,這樣我們才可以直接使用不帶路徑的檔案名稱來訪問它。下面來看這個xml檔案的內容:

////////////////////////////////////////////////////////////////////////

<?xml version="1.0" encoding="utf-8" ?>
<Root>
  <!--第一種xml的格式-->
  <FirstStyle>
    <Test>one</Test>
    <Test>two</Test>
    <Test>three</Test>
  </FirstStyle>
 
  <!--第二種xml格式,設定檔中常用的格式-->
  <SecondStyle>
    <Test_ name="firstname" value="xu"/>
    <Test_ name="lastname" value="jin"/>
    <Test_ name="lastname" value="lin"/>
  </SecondStyle>

 

<!--第三種xml格式,搭配前兩種-->

  <ThirdSytle>
    <Test1 name="test1">test1_value</Test1>
  </ThirdSytle>
</Root>
 //////////////////////////////////////////////////////////////////

      <Root></Root>只是表明xml的根節點,<FirstSytle></FirstStyle>定義第一種格式,可以無限嵌套節點,<Test>是<FirstStyle>的一個多值嵌套子節點,節點中已經賦了三個“值”:one two three ,在後面的代碼中,將說明怎麼讀取這幾個值。<SecondStyle> 定義第二種格式,<Test_>節點中沒有“值”,但是卻增加了“屬性”name 和 value ,屬性的名字可以自訂。我們在後面也會說明如何讀取這些屬性裡面的值。這兩種方式可以配合使用,就是xml中的第三種模式,不做另外的說明,在下面的存取碼中也沒有做訪問執行個體,可以參考前兩種自己組合,下面來看代碼:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace LinqXml
{
    class Program
    {
        static void Main(string[] args)
        {
            //第一種xml格式的讀法
            var firstCollection = from test in XElement.Load("test.xml").Element("FirstStyle").Elements("Test")
                                  select test.Value;
            foreach (string s in firstCollection)
            {
                Console.WriteLine(s);
            }

            //第二種xml格式的讀法
            var secondCollection = from test in XElement.Load("test.xml").Element("SecondStyle").Elements("Test_")
                                   where test.Attribute("name").Value.Equals("lastname")
                                   select test.Attribute("value").Value;
            foreach (string s in secondCollection)
            {
                Console.WriteLine(s);
            }
           

        }
    }
}

      在進行xml節點選擇的時候,自外而內,跟節點不用選,使用節點名稱選擇。如果該節點是單節點(如幾種Style的節點),則應該用Element("")來選擇,如果是多節點(如<Test>),則必須使用Elements("")來選擇,如果選用Element(""),則只會返回該類節點的第一個。linq 文法稍微解釋一下,from制定選擇的範圍,where指定選擇的條件,selete 指定選擇的目標。如果不明白可以把代碼實踐一下調試看看,有不同想法的兄弟聯絡我吧: zhaotiantang520@live.cn.

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.