Если это целое XML, то вы делаете жизнь более сложной, чем нужно.Элемент Transaction
является корневым элементом, и вы знаете, что будет точно один:
XDocument result = XDocument.Load("test.xml");
// Just for brevity
var x = result.Root;
var detail = new {
// Note the fixed capitalization
TransactionID = x.Element("TransactionID").Value,
Frequency = x.Element("Frequency").Value,
Amount = x.Element("Amount").Value,
Email = x.Element("Email").Value,
Status = x.Element("Status").Value
};
Console.WriteLine(detail);
Конечно, если это часть более крупного документа, то вы могли быuse:
var x = result.Descendants("Transaction").First();
// Same as before
Кстати, вы можете рассмотреть возможность использования явных преобразований из XElement
в различные другие типы.Например:
var detail = new {
// Note the fixed capitalization
TransactionID = (string) x.Element("TransactionID"),
Frequency = (string) x.Element("Frequency"),
Amount = (int) x.Element("Amount"),
Email = (string) x.Element("Email"),
Status = (int) x.Element("Status")
};
Обратите внимание, что любые приведения к обнуляемым типам (либо ссылочным типам, либо обнуляемым типам значений) будут просто возвращать ноль, если входные данные будут нулевыми, поэтому отсутствующий элемент в итоге даст вам нулевой результат,Иногда это хорошо;В других случаях вы действительно хотите исключение.