C# 讀取XML使用XPath及Linq

  • 10815
  • 0

C# 讀取XML使用XPath及Linq


今天介紹一下XML、XPath及一點Linq的用法

首先using

 

using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;

//範例.xml

 

<?xml version='1.0' encoding='UTF-8'?>
<Report>
    <Area Label='亞洲' ID='1'>
        <Country Label='台灣'>
            <Location Type='2' Label='台北市'>
              <Store Type='1'> <!-- 1:直營 2:加盟 -->
                  <StoreItem ID='1' SName='店名' InfoType='String'> 
                  <String>中山</String>
                  </StoreItem >
                  <StoreItem ID='2' SName='地址' InfoType='String'> 
                  <String>台北市中山北路xxx號</String>
                  </StoreItem >
                  <StoreItem ID='3' SName='電話' InfoType='String'> 
                  <String>02-1234567890</String>
                  </StoreItem >
              </Store>
             <Store Type='2'> <!-- 1:直營 2:加盟 -->
                  <StoreItem ID='1' SName='店名' InfoType='String'> 
                  <String>內湖</String>
                  </StoreItem >
                  <StoreItem ID='2' SName='地址' InfoType='String'> 
                  <String>台北市港漧路xxx號</String>
                  </StoreItem >
                  <StoreItem ID='3' SName='電話' InfoType='String'> 
                  <String>02-1234567890</String>
                  </StoreItem >
              </Store>
            </Location>
            <Location Type='2' Label='高雄市'>
                <Store Type='1'> <!-- 1:直營 2:加盟 -->
                  <StoreItem ID='1' SName='店名' InfoType='String'> 
                  <String>中正</String>
                  </StoreItem >
                  <StoreItem ID='2' SName='地址' InfoType='String'> 
                  <String>高雄市中山北路xxx號</String>
                  </StoreItem >
                  <StoreItem ID='3' SName='電話' InfoType='String'> 
                  <String>07-1234567890</String>
                  </StoreItem >
              </Store>
            </Location>
        </Country>
    </Area>
</Report>


//Code

  //讀檔

 

 string fullName = Server.MapPath("XML範例") + "\\範例.xml";
  XDocument loaded = XDocument.Load(fullName);


   //範例1.
  //尋找台北市直營店的資訊
   
 

IEnumerable<XElement> list1
           = loaded.XPathSelectElements("//Area/Country/Location[@Label='台北市']/Store[@Type='1']");

   foreach (XElement item in list1.Elements())
   {           
       Response.Write(item.Value + "<br>");
   }