使用XDocument.Load和XElement.Load查询XML
一、xml文件如下:
xml文件<?xml version="1.0" encoding="utf-8" ?> <DocumentElement> <IAG> <AliasName>allantsay</AliasName> <SortNo>IAG01</SortNo> <Active>N</Active> <ActiveForWOP>N</ActiveForWOP> </IAG> <IAG> <AliasName>朱亞光</AliasName> <SortNo>IAG02</SortNo> <Active>N</Active> <ActiveForWOP>Y</ActiveForWOP> </IAG> <IAG> <AliasName>張沈偉</AliasName> <SortNo>IAG03</SortNo> <Active>Y</Active> <ActiveForWOP>Y</ActiveForWOP> </IAG> <IAG> <AliasName>程康</AliasName> <SortNo>IAG04</SortNo> <Active>Y</Active> <ActiveForWOP>Y</ActiveForWOP> </IAG> </DocumentElement>查詢代碼如下:
二、使用XDocument.Load文件,查詢結果:
包括3個小例子:1. result為XElements,但只有一個結果返回,element為<IAG><AliasName>程康</AliasName><Active>..........</IAG>
2. 與1效果相同,只是增加了排序,返回兩個結果,Active為Y的。
3. 與2效果相同,只是將返回值賦給兩個字符串。
查詢1string xmlFilePath = Server.MapPath("IAGSalesList.xml");//xml文件存放的路徑 XDocument doc = XDocument.Load(xmlFilePath); IEnumerable<XElement> elements = from result in doc.Root.Elements("IAG") where (string)result.Element("AliasName") == "程康" select result; foreach (XElement element in elements) { string s = element.Element("AliasName").Value; string s1 = element.Element("Active").Value; string s2 = element.Element("SortNo").Value; } IEnumerable<XElement> matches = from result in doc.Root.Elements("IAG") where (string)result.Element("Active") == "Y" orderby (string)result.Element("SortNo") descending select result; foreach (XElement element in matches) { string s = element.Element("AliasName").Value; string s1 = element.Element("Active").Value; string s2 = element.Element("SortNo").Value; } var matches1 = from result in doc.Root.Elements("IAG") where (string)result.Element("Active") == "Y" orderby (string)result.Element("SortNo") descending select new { aliasName = (string)result.Element("AliasName"), sortNo = (string)result.Element("SortNo") }; foreach (var element in matches1) { string s = element.aliasName; string s1 = element.sortNo; }
三、使用XElement.Load,查詢結果如下:使用XElement.Load,就不能使用doc.Root.Elements("")了。
包括3個例子。1. 返回一個結果,內容為<SortNo>IAG04</SorNo>
2. 將result.Element("SortNo"從select中移到in中,效果相同,返回4個結果,內容為<AliasName>allantsay</AliasName>
<AliasName>..............................
3. 使用Descendants方式,結果與2一樣。
查詢2string xmlFilePath = Server.MapPath("IAGSalesList.xml");//xml文件存放的路徑 XElement doc = XElement.Load(xmlFilePath); IEnumerable<XElement> elements = from result in doc.Elements("IAG") where (string)result.Element("AliasName") == "程康" select result.Element("SortNo"); foreach (XElement element in elements) { string s2 = element.Value; } IEnumerable<XElement> elements1 = from result in doc.Elements("IAG").Elements("AliasName") select result; foreach (XElement element in elements1) { string s2 = element.Value; } IEnumerable<XElement> elements2 = from result in doc.Descendants("AliasName") select result; foreach (XElement element in elements2) { string s2 = element.Value; }