[英]Dynamically Creating LINQ Query to query XML Elements
我有一個類似於下面的 XML,
<?xml version="1.0" encoding="utf-8"?>
<body>
<Result>
<Students>
<Student>
<Firstname Value="Max" />
<LastName Value="Dean" />
</Student>
<Student>
<Firstname Value="Driz" />
<LastName Value="Jay" />
</Student>
</Students>
</Result>
</body>
我試圖弄清楚是否可以編寫一些代碼來動態構建 Linq 查詢,例如,
string pathToElements = "Result.Students.Student";
var individualItems = pathToElements.Split(".");
類似於,
XElement document = XElement.Parse(xml);
var evaluatedResult = document.Elements("Result")
.Elements("Students")
.Elements("Student")
.ToList();
基本上, individualItems
有 3 個項目“結果”、“學生”和“學生”。 我正在探索可能的方法來創建一個動態查詢來完成類似的事情,
document.Elements("Result")
.Elements("Students")
.Elements("Student")
.ToList();
對於 n 個項目,我只需要繼續將.Elements("") 附加到查詢中。 關於如何實現這一點的任何建議,我的第一直覺是使用字符串構建器並將查詢作為字符串。 我能夠做到這一點,但無法找出如何執行字符串形式的 LINQ 查詢。 提前致謝
您可以使用 XPath 查詢 XML (它是一個字符串,因此您可以動態創建它)然后您可以反序列化該項目
此代碼的output
using System;
using System.Xml.XPath;
using System.IO;
public class Program
{
public static void Main()
{
var xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<body>
<Result>
<Students>
<Student>
<Firstname Value=""Max"" />
<LastName Value=""Dean"" />
</Student>
<Student>
<Firstname Value=""Driz"" />
<LastName Value=""Jay"" />
</Student>
</Students>
</Result>
</body>";
using (TextReader tr = new StringReader(xml))
{
var xdoc = new XPathDocument(tr);
var nav = xdoc.CreateNavigator();
var nodeIter = nav.Select("/body/Result/Students/Student");
while (nodeIter.MoveNext())
{
Console.WriteLine("Student: {0}", nodeIter.Current.InnerXml);
};
}
}
}
是
Student: <Firstname Value="Max" />
<LastName Value="Dean" />
Student: <Firstname Value="Driz" />
<LastName Value="Jay" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.