使用LINQ to XML读取XML [英] Read XML using LINQ to XML
本文介绍了使用LINQ to XML读取XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
任何人都可以告诉我任何关于LINQ到XML的优化 -
(查询检索所有具有Compartment == 1的Case节点)
Can anyone tell me any optimization for following LINQ to XML-
(Query retrieves all Case node having Compartment==1)
System.Xml.Linq.XDocument objDoc = System.Xml.Linq.XDocument.Load("ABC.xml");
var objCases = from C in objDoc.Descendants("Case")
where C.Parent.Name.ToString().Trim() == "cases"
&& C.Parent.Parent.Name.ToString().Trim() == "Data"
&& C.Attribute("Compartment").Value.Trim() == "1"
select C;
List<string> Lst_ExistingCase = new List<string>();
foreach (var xCase in objCases)
{
if (xCase.Attribute("Id") != null)
Lst_ExistingCase.Add(xCase.Attribute("Id").Value.Trim());
}
objDoc = null;
//****** ABC.xml ******************
<Data>
<cases>
<Case Id="A" Compartment="1" />
<Case Id="B" Compartment="2"/>
<Case Id="C" Compartment="3"/>
<Case Id="D" Compartment="1"/>
<Case Id="E" Compartment="2"/>
<Case Id="F" Compartment="3"/>
<Case Id="G" Compartment="1"/>
</cases>
</Data>
//********************************
推荐答案
请试试这个。
Please try this.
System.Xml.Linq.XDocument objDoc = System.Xml.Linq.XDocument.Load(HttpContext.Server.MapPath("XMLFile.xml"));
var objCases = (from C in objDoc.Descendants("Case")
where C.Attribute("Compartment").Value == "1"
select C.Attribute("Id").Value).ToList();
foreach (var Ids in objCases)
{
Console.WriteLine(Ids);
}
如果你想选择所有Case Node然后你可以使用这个
And if you want to select all Case Node then you can use this
var objCases = (from C in objDoc.Descendants("Case")
where C.Attribute("Compartment").Value == "1"
select C).ToList();
这篇关于使用LINQ to XML读取XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文