使用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效果相同,只是將返回值賦給兩個字符串。

查詢1
        string 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一樣。 

查詢2
        string 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;
}




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM