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