Если у вас есть ссылка на определенный элемент, вы можете получить значения из любого из его вложенных элементов, используя методы Element()
или Attribute()
. Вы можете получить их список, используя Elements()
или Attributes()
для выполнения запросов LINQ к ним. Предполагая, что у нас есть ссылка на корневой элемент, вы можете получить следующую информацию:
XElement root = ...;
XElement myItem = root.Element("MyItem"); // get the first "MyItem" element
string Host = myItem.Attribute("Host").Value; // get value of "Host" attribute
string LastName = myItem.Attribute("LastName").Value; // get value of "LastName" attribute
string FirstName = myItem.Attribute("FirstName").Value; // get value of "FirstName" attribute
// find "Groupe4"
XElement Groupe4 = (from g in myItem.Element("TimeStamp")
.Elements("Group")
where g.Attribute("Name").Value == "Groupe4"
select g) // only one element should be found
.Single(); // assign that element to variable Groupe4
// Get Value of Variable with ID = 4001
double Value4001 = (from v in Groupe4.Elements("Variable") // of all Variable elements
where (int)v.Attribute("ID") == 4001 // choose elements where ID = 4001
select (double)v.Attribute("Value")) // select the Value
.Single(); // assign that value to variable Value 4001
Таким образом, чтобы применить это к вашему запросу, вы можете сделать что-то вроде этого:
XElement xmlTweets = XElement.Parse(e.Result);
var id = 4001; // the ID to find
var toto = from tweet in xmlTweets.Descendants("MyItem")
.Take(10)
orderby (DateTime)tweet.Element("TimeStamp")
.Attribute("ComputerTime") descending
select new History {
DisplayName = String.Format("{0} {1}",
tweet.Attribute("PatientFirstName").Value,
tweet.Attribute("PatientLastName").Value),
// find the Variable with matching ID and get its Value as a double
Value = (from v in tweet.Descendants("Variable")
where (int)v.Attribute("ID") == id
select (double)v.Attribute("Value"))
.Single()
};