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>"); }